Skip to content

Commit 63d2c11

Browse files
committed
Micro-optimization: touch fewer denotations
1 parent aa0d150 commit 63d2c11

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

compiler/src/dotty/tools/dotc/ast/TreeInfo.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -784,8 +784,8 @@ trait TypedTreeInfo extends TreeInfo[Type] { self: Trees.Instance[Type] =>
784784
def tupleArgs(tree: Tree)(using Context): List[Tree] = tree match {
785785
case Block(Nil, expr) => tupleArgs(expr)
786786
case Inlined(_, Nil, expr) => tupleArgs(expr)
787-
case Apply(fn, args)
788-
if fn.symbol.name == nme.apply &&
787+
case Apply(fn: NameTree, args)
788+
if fn.name == nme.apply &&
789789
fn.symbol.owner.is(Module) &&
790790
defn.isTupleClass(fn.symbol.owner.companionClass) => args
791791
case _ => Nil

compiler/src/dotty/tools/dotc/transform/FunctionXXLForwarders.scala

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,20 @@ class FunctionXXLForwarders extends MiniPhase with IdentityDenotTransformer {
3939
ref(receiver.symbol).appliedToArgss(argss).cast(defn.ObjectType)
4040
}
4141

42+
if impl.symbol.owner.is(Trait) then return impl
43+
4244
val forwarders =
4345
for {
44-
tree <- if (impl.symbol.owner.is(Trait)) Nil else impl.body
45-
if tree.symbol.is(Method) && tree.symbol.name == nme.apply &&
46-
tree.symbol.signature.paramsSig.size > MaxImplementedFunctionArity &&
47-
tree.symbol.allOverriddenSymbols.exists(sym => defn.isXXLFunctionClass(sym.owner))
46+
(ddef: DefDef) <- impl.body
47+
if ddef.name == nme.apply && ddef.symbol.is(Method) &&
48+
ddef.symbol.signature.paramsSig.size > MaxImplementedFunctionArity &&
49+
ddef.symbol.allOverriddenSymbols.exists(sym => defn.isXXLFunctionClass(sym.owner))
4850
}
4951
yield {
5052
val xsType = defn.ArrayType.appliedTo(List(defn.ObjectType))
5153
val methType = MethodType(List(nme.args))(_ => List(xsType), _ => defn.ObjectType)
52-
val meth = newSymbol(tree.symbol.owner, nme.apply, Synthetic | Method, methType)
53-
DefDef(meth, paramss => forwarderRhs(tree, paramss.head.head))
54+
val meth = newSymbol(ddef.symbol.owner, nme.apply, Synthetic | Method, methType)
55+
DefDef(meth, paramss => forwarderRhs(ddef, paramss.head.head))
5456
}
5557

5658
cpy.Template(impl)(body = forwarders ::: impl.body)

0 commit comments

Comments
 (0)