diff options
author | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-10-02 10:07:58 -0700 |
---|---|---|
committer | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-10-02 10:07:58 -0700 |
commit | 16553216da54b006ed784003865aa6f28e1a7f9f (patch) | |
tree | f147de290e1847da360b606285080dc4ddd52519 | |
parent | e9edc69684b3d55a0aef16325e358036c71f4c57 (diff) | |
parent | 2f9e766ec269e4e4dd8ddb0f92d915366110af6d (diff) | |
download | scala-16553216da54b006ed784003865aa6f28e1a7f9f.tar.gz scala-16553216da54b006ed784003865aa6f28e1a7f9f.tar.bz2 scala-16553216da54b006ed784003865aa6f28e1a7f9f.zip |
Merge pull request #1439 from scalamacros/topic/reflective-uniques
fixes a bug in a weak cache in runtime reflection
-rw-r--r-- | src/reflect/scala/reflect/runtime/SynchronizedTypes.scala | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/runtime/SynchronizedTypes.scala b/src/reflect/scala/reflect/runtime/SynchronizedTypes.scala index b9b140a2fd..9b4d8d1d48 100644 --- a/src/reflect/scala/reflect/runtime/SynchronizedTypes.scala +++ b/src/reflect/scala/reflect/runtime/SynchronizedTypes.scala @@ -24,7 +24,8 @@ trait SynchronizedTypes extends internal.Types { self: SymbolTable => // i.e. they have their caches cleaned up automatically on per-run basis, // therefore they should use vanilla uniques, which are faster if (!isCompilerUniverse) { - val result = if (uniques contains tp) uniques(tp).get else null + val inCache = uniques get tp + val result = if (inCache.isDefined) inCache.get.get else null if (result ne null) result.asInstanceOf[T] else { uniques(tp) = new WeakReference(tp) |