aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Uniques.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-01-27 15:35:12 +0100
committerMartin Odersky <odersky@gmail.com>2014-01-27 16:02:21 +0100
commitc476171d838c55bbfe36856e73a470e826748acc (patch)
treeb2f93b5f14c23f779391c68860cb45e47f33d74d /src/dotty/tools/dotc/core/Uniques.scala
parentfe85a5aa18e071922d11f1dd1694fe478b9d4fad (diff)
downloaddotty-c476171d838c55bbfe36856e73a470e826748acc.tar.gz
dotty-c476171d838c55bbfe36856e73a470e826748acc.tar.bz2
dotty-c476171d838c55bbfe36856e73a470e826748acc.zip
Cache result of narrow on Methods.
narrow is exercised a lot after the improvement to normalize. So it's important to cache it in order not to bust `uniques` with NoprefixTermRefs.
Diffstat (limited to 'src/dotty/tools/dotc/core/Uniques.scala')
-rw-r--r--src/dotty/tools/dotc/core/Uniques.scala7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/Uniques.scala b/src/dotty/tools/dotc/core/Uniques.scala
index 765b5d73f..9ad736c9c 100644
--- a/src/dotty/tools/dotc/core/Uniques.scala
+++ b/src/dotty/tools/dotc/core/Uniques.scala
@@ -24,7 +24,12 @@ object Uniques {
def unique[T <: Type](tp: T)(implicit ctx: Context): T = {
if (monitored) recordCaching(tp)
if (tp.hash == NotCached) tp
- else ctx.uniques.findEntryOrUpdate(tp).asInstanceOf[T]
+ else if (monitored) {
+ val size = ctx.uniques.size
+ val result = ctx.uniques.findEntryOrUpdate(tp).asInstanceOf[T]
+ if (ctx.uniques.size > size) record(s"fresh unique ${tp.getClass}")
+ result
+ } else ctx.uniques.findEntryOrUpdate(tp).asInstanceOf[T]
} /* !!! DEBUG
ensuring (
result => tp.toString == result.toString || {