summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/TypingTransformers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2012-08-15 19:21:37 +0200
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2012-08-20 08:11:05 +0100
commit51f47a3c3f3dc7e824f96ecbed0d28cf3262d655 (patch)
tree7d15b03b6e99419f3d1a47caef8418e65fcb5295 /src/compiler/scala/tools/nsc/transform/TypingTransformers.scala
parent0afe071afc8f6743cf1a392666492f7a726b7070 (diff)
downloadscala-51f47a3c3f3dc7e824f96ecbed0d28cf3262d655.tar.gz
scala-51f47a3c3f3dc7e824f96ecbed0d28cf3262d655.tar.bz2
scala-51f47a3c3f3dc7e824f96ecbed0d28cf3262d655.zip
Optimization to atOwner
Moved costly hashMap updates into SuperAccessors from general tree transformers and replaced by immutable map.
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/TypingTransformers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/TypingTransformers.scala7
1 files changed, 1 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/TypingTransformers.scala b/src/compiler/scala/tools/nsc/transform/TypingTransformers.scala
index 9e681b321c..82e95523d9 100644
--- a/src/compiler/scala/tools/nsc/transform/TypingTransformers.scala
+++ b/src/compiler/scala/tools/nsc/transform/TypingTransformers.scala
@@ -25,19 +25,14 @@ trait TypingTransformers {
protected var curTree: Tree = _
protected def typedPos(pos: Position)(tree: Tree) = localTyper typed { atPos(pos)(tree) }
- /** a typer for each enclosing class */
- val typers: mutable.Map[Symbol, analyzer.Typer] = new mutable.HashMap
-
- override def atOwner[A](owner: Symbol)(trans: => A): A = atOwner(curTree, owner)(trans)
+ override final def atOwner[A](owner: Symbol)(trans: => A): A = atOwner(curTree, owner)(trans)
def atOwner[A](tree: Tree, owner: Symbol)(trans: => A): A = {
val savedLocalTyper = localTyper
// println("transformer atOwner: " + owner + " isPackage? " + owner.isPackage)
localTyper = localTyper.atOwner(tree, if (owner.isModule) owner.moduleClass else owner)
- typers += Pair(owner, localTyper)
val result = super.atOwner(owner)(trans)
localTyper = savedLocalTyper
- typers -= owner
result
}