Skip to content

Commit 65b448c

Browse files
committed
Drop per run on wrappedArrays and function classes
1 parent 7ab8caa commit 65b448c

File tree

4 files changed

+15
-16
lines changed

4 files changed

+15
-16
lines changed

compiler/src/dotty/tools/backend/jvm/DottyBackendInterface.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ class DottyBackendInterface(outputDirectory: AbstractFile, val superCallsMap: Ma
141141
val externalEqualsNumObject: Symbol = defn.BoxesRunTimeModule.requiredMethod(nme.equalsNumObject)
142142
val externalEquals: Symbol = defn.BoxesRunTimeModule.info.decl(nme.equals_).suchThat(toDenot(_).info.firstParamTypes.size == 2).symbol
143143
val MaxFunctionArity: Int = Definitions.MaxImplementedFunctionArity
144-
val FunctionClass: Array[Symbol] = defn.FunctionClassPerRun()
145-
val AbstractFunctionClass: Array[Symbol] = defn.AbstractFunctionClassPerRun()
144+
val FunctionClass: Array[Symbol] = defn.FunctionClass
145+
val AbstractFunctionClass: Array[Symbol] = defn.AbstractFunctionClass
146146
val PartialFunctionClass: Symbol = defn.PartialFunctionClass
147147
val AbstractPartialFunctionClass: Symbol = defn.AbstractPartialFunctionClass
148148
val String_valueOf: Symbol = defn.String_valueOf_Object

compiler/src/dotty/tools/dotc/core/Definitions.scala

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -399,10 +399,10 @@ class Definitions {
399399
def getWrapVarargsArrayModule: Symbol = if (isNewCollections) ScalaRuntimeModule else ScalaPredefModule
400400

401401
// The set of all wrap{X, Ref}Array methods, where X is a value type
402-
val WrapArrayMethods: PerRun[collection.Set[Symbol]] = new PerRun({ implicit ctx =>
402+
@threadUnsafe lazy val WrapArrayMethods: collection.Set[Symbol] = {
403403
val methodNames = ScalaValueTypes.map(ast.tpd.wrapArrayMethodName) + nme.wrapRefArray
404404
methodNames.map(getWrapVarargsArrayModule.requiredMethod(_))
405-
})
405+
}
406406

407407
@threadUnsafe lazy val NilModule: Symbol = ctx.requiredModule("scala.collection.immutable.Nil")
408408

@@ -878,11 +878,10 @@ class Definitions {
878878

879879
// ----- Symbol sets ---------------------------------------------------
880880

881-
@threadUnsafe lazy val AbstractFunctionType: Array[TypeRef] = mkArityArray("scala.runtime.AbstractFunction", MaxImplementedFunctionArity, 0)
882-
val AbstractFunctionClassPerRun: PerRun[Array[Symbol]] = new PerRun(implicit ctx => AbstractFunctionType.map(_.symbol.asClass))
883-
def AbstractFunctionClass(n: Int)(implicit ctx: Context): Symbol = AbstractFunctionClassPerRun()(ctx)(n)
884-
@threadUnsafe private lazy val ImplementedFunctionType = mkArityArray("scala.Function", MaxImplementedFunctionArity, 0)
885-
def FunctionClassPerRun: PerRun[Array[Symbol]] = new PerRun(implicit ctx => ImplementedFunctionType.map(_.symbol.asClass))
881+
@threadUnsafe lazy val AbstractFunctionClass: Array[Symbol] =
882+
mkArityArray("scala.runtime.AbstractFunction", MaxImplementedFunctionArity, 0).map(_.symbol.asClass)
883+
@threadUnsafe lazy val FunctionClass: Array[Symbol] =
884+
mkArityArray("scala.Function", MaxImplementedFunctionArity, 0).map(_.symbol.asClass)
886885

887886
val LazyHolder: PerRun[Map[Symbol, Symbol]] = new PerRun({ implicit ctx =>
888887
def holderImpl(holderType: String) = ctx.requiredClass("scala.runtime." + holderType)
@@ -909,15 +908,15 @@ class Definitions {
909908
else if (isErased)
910909
ctx.requiredClass("scala.ErasedFunction" + n.toString)
911910
else if (n <= MaxImplementedFunctionArity)
912-
FunctionClassPerRun()(ctx)(n)
911+
FunctionClass(n)
913912
else
914913
ctx.requiredClass("scala.Function" + n.toString)
915914

916-
@threadUnsafe lazy val Function0_apply: Symbol = ImplementedFunctionType(0).symbol.requiredMethod(nme.apply)
915+
@threadUnsafe lazy val Function0_apply: Symbol = FunctionClass(0).requiredMethod(nme.apply)
917916

918917
def FunctionType(n: Int, isContextual: Boolean = false, isErased: Boolean = false)(implicit ctx: Context): TypeRef =
919-
if (n <= MaxImplementedFunctionArity && (!isContextual || ctx.erasedTypes) && !isErased) ImplementedFunctionType(n)
920-
else FunctionClass(n, isContextual, isErased).typeRef
918+
if (n <= MaxImplementedFunctionArity && (!isContextual || ctx.erasedTypes) && !isErased) FunctionClass(n).typeRef
919+
else FunctionClass(n, isContextual, isErased).typeRef // !!!align with FunctionClass?
921920

922921
lazy val PolyFunctionClass = ctx.requiredClass("scala.PolyFunction")
923922
def PolyFunctionType = PolyFunctionClass.typeRef

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ class ArrayApply extends MiniPhase {
2626
if (tree.symbol.name == nme.apply && tree.symbol.owner == defn.ArrayModule.moduleClass) { // Is `Array.apply`
2727
tree.args match {
2828
case StripAscription(Apply(wrapRefArrayMeth, (seqLit: tpd.JavaSeqLiteral) :: Nil)) :: ct :: Nil
29-
if defn.WrapArrayMethods().contains(wrapRefArrayMeth.symbol) && elideClassTag(ct) =>
29+
if defn.WrapArrayMethods.contains(wrapRefArrayMeth.symbol) && elideClassTag(ct) =>
3030
seqLit
3131

3232
case elem0 :: StripAscription(Apply(wrapRefArrayMeth, (seqLit: tpd.JavaSeqLiteral) :: Nil)) :: Nil
33-
if defn.WrapArrayMethods().contains(wrapRefArrayMeth.symbol) =>
33+
if defn.WrapArrayMethods.contains(wrapRefArrayMeth.symbol) =>
3434
tpd.JavaSeqLiteral(elem0 :: seqLit.elems, seqLit.elemtpt)
3535

3636
case _ =>

compiler/src/dotty/tools/dotc/typer/Checking.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -822,7 +822,7 @@ trait Checking {
822822
checkInlineConformant(expr, isFinal, what)
823823
case SeqLiteral(elems, _) =>
824824
elems.foreach(elem => checkInlineConformant(elem, isFinal, what))
825-
case Apply(fn, List(arg)) if defn.WrapArrayMethods().contains(fn.symbol) =>
825+
case Apply(fn, List(arg)) if defn.WrapArrayMethods.contains(fn.symbol) =>
826826
checkInlineConformant(arg, isFinal, what)
827827
case _ =>
828828
def isCaseClassApply(sym: Symbol): Boolean =

0 commit comments

Comments
 (0)