summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/Trees.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-11-30 06:30:32 +0100
committerPaul Phillips <paulp@improving.org>2012-12-27 15:47:32 -0800
commit113405b935db20705b88df4fd3ff24273e4391bc (patch)
tree1b7a9b3522fb834326173b849dcde588e175e35c /src/reflect/scala/reflect/internal/Trees.scala
parentcdf6feb1aea366c33ac99e3e5f1e235f7ea0ae19 (diff)
downloadscala-113405b935db20705b88df4fd3ff24273e4391bc.tar.gz
scala-113405b935db20705b88df4fd3ff24273e4391bc.tar.bz2
scala-113405b935db20705b88df4fd3ff24273e4391bc.zip
Eliminate allocations in Trees.
Diffstat (limited to 'src/reflect/scala/reflect/internal/Trees.scala')
-rw-r--r--src/reflect/scala/reflect/internal/Trees.scala7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/reflect/scala/reflect/internal/Trees.scala b/src/reflect/scala/reflect/internal/Trees.scala
index 9e737528d2..870c1ec5ed 100644
--- a/src/reflect/scala/reflect/internal/Trees.scala
+++ b/src/reflect/scala/reflect/internal/Trees.scala
@@ -926,8 +926,11 @@ trait Trees extends api.Trees { self: SymbolTable =>
def withPosition(flag: Long, position: Position) =
copy() setPositions positions + (flag -> position)
- override def mapAnnotations(f: List[Tree] => List[Tree]): Modifiers =
- Modifiers(flags, privateWithin, f(annotations)) setPositions positions
+ override def mapAnnotations(f: List[Tree] => List[Tree]): Modifiers = {
+ val newAnns = f(annotations)
+ if (annotations == newAnns) this
+ else Modifiers(flags, privateWithin, newAnns) setPositions positions
+ }
override def toString = "Modifiers(%s, %s, %s)".format(flagString, annotations mkString ", ", positions)
}