@@ -11,7 +11,7 @@ import Decorators._
1111import ast .Trees ._
1212import MegaPhase ._
1313import StdNames .nme
14- import Names .TermName
14+ import Names ._
1515import Constants .Constant
1616
1717
@@ -28,14 +28,15 @@ class Instrumentation extends MiniPhase { thisPhase =>
2828 ctx.settings.YinstrumentClosures .value ||
2929 ctx.settings.YinstrumentAllocations .value
3030
31+ private val namesOfInterest = List (" ::" , " +=" , " toString" )
32+ private var namesToRecord : Set [Name ] = _
33+
3134 private var consName : TermName = _
3235 private var consEqName : TermName = _
3336
34- override def prepareForUnit (tree : Tree )(using Context ): Context = {
35- consName = " ::" .toTermName
36- consEqName = " +=" .toTermName
37+ override def prepareForUnit (tree : Tree )(using Context ): Context =
38+ namesToRecord = namesOfInterest.map(_.toTermName).toSet
3739 ctx
38- }
3940
4041 private def record (category : String , tree : Tree )(using Context ): Tree = {
4142 val key = Literal (Constant (s " $category${tree.sourcePos.show}" ))
@@ -45,8 +46,8 @@ class Instrumentation extends MiniPhase { thisPhase =>
4546 override def transformApply (tree : Apply )(using Context ): Tree = tree.fun match {
4647 case Select (nu : New , _) =>
4748 cpy.Block (tree)(record(i " alloc/ ${nu.tpe}@ " , tree) :: Nil , tree)
48- case Select (_, name) if name == consName || name == consEqName =>
49- cpy.Block (tree)(record(" alloc/:: " , tree) :: Nil , tree)
49+ case Select (_, name) if namesToRecord.contains( name) =>
50+ cpy.Block (tree)(record(i " alloc/ $name " , tree) :: Nil , tree)
5051 case _ =>
5152 tree
5253 }
0 commit comments