Skip to content

Commit 477f531

Browse files
committed
Micro-optimization: avoid a lazy val in a transformDefDef
1 parent 304966b commit 477f531

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

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

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -101,19 +101,8 @@ import Decorators._
101101
cpy.installAfter(thisTransform)
102102
}
103103

104-
lazy val field = sym.field.orElse(newField).asTerm
105-
106-
def adaptToField(tree: Tree): Tree =
107-
if (tree.isEmpty) tree else tree.ensureConforms(field.info.widen)
108-
109104
val NoFieldNeeded = Lazy | Deferred | JavaDefined | (if (ctx.settings.YnoInline.value) EmptyFlags else Inline)
110105

111-
def isErasableBottomField(cls: Symbol): Boolean = {
112-
// TODO: For Scala.js, return false if this field is in a js.Object unless it is an ErasedPhantomClass.
113-
!field.isVolatile &&
114-
((cls eq defn.NothingClass) || (cls eq defn.NullClass) || (cls eq defn.BoxedUnitClass) || (cls eq defn.ErasedPhantomClass))
115-
}
116-
117106
def erasedBottomTree(sym: Symbol) = {
118107
if (sym eq defn.NothingClass) Throw(Literal(Constant(null)))
119108
else if (sym eq defn.NullClass) Literal(Constant(null))
@@ -125,7 +114,18 @@ import Decorators._
125114
}
126115
}
127116

128-
if (sym.is(Accessor, butNot = NoFieldNeeded))
117+
if (sym.is(Accessor, butNot = NoFieldNeeded)) {
118+
val field = sym.field.orElse(newField).asTerm
119+
120+
def adaptToField(tree: Tree): Tree =
121+
if (tree.isEmpty) tree else tree.ensureConforms(field.info.widen)
122+
123+
def isErasableBottomField(cls: Symbol): Boolean = {
124+
// TODO: For Scala.js, return false if this field is in a js.Object unless it is an ErasedPhantomClass.
125+
!field.isVolatile &&
126+
((cls eq defn.NothingClass) || (cls eq defn.NullClass) || (cls eq defn.BoxedUnitClass) || (cls eq defn.ErasedPhantomClass))
127+
}
128+
129129
if (sym.isGetter) {
130130
var rhs = tree.rhs.changeOwnerAfter(sym, field, thisTransform)
131131
if (isWildcardArg(rhs)) rhs = EmptyTree
@@ -151,6 +151,7 @@ import Decorators._
151151
}
152152
else tree // curiously, some accessors from Scala2 have ' ' suffixes. They count as
153153
// neither getters nor setters
154+
}
154155
else tree
155156
}
156157
}

0 commit comments

Comments
 (0)