Skip to content

Commit 9e33699

Browse files
authored
Merge branch 'main' into documentation-snippet-typo
2 parents 6b4a538 + 1390609 commit 9e33699

File tree

308 files changed

+1876
-1369
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

308 files changed

+1876
-1369
lines changed

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

Lines changed: 32 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
3939
import DottyBackendInterface.symExtensions
4040
import bTypes._
4141
import coreBTypes._
42-
import BCodeBodyBuilder._
4342

4443
protected val primitives: DottyPrimitives
4544

@@ -359,7 +358,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
359358
// but I was able to derrive it by reading
360359
// AbstractValidatingLambdaMetafactory.validateMetafactoryArgs
361360

362-
val DesugaredSelect(prefix, _) = fun
361+
val DesugaredSelect(prefix, _) = fun: @unchecked
363362
genLoad(prefix)
364363
}
365364

@@ -431,7 +430,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
431430
if (value.tag != UnitTag) (value.tag, expectedType) match {
432431
case (IntTag, LONG ) => bc.lconst(value.longValue); generatedType = LONG
433432
case (FloatTag, DOUBLE) => bc.dconst(value.doubleValue); generatedType = DOUBLE
434-
case (NullTag, _ ) => bc.emit(asm.Opcodes.ACONST_NULL); generatedType = RT_NULL
433+
case (NullTag, _ ) => bc.emit(asm.Opcodes.ACONST_NULL); generatedType = srNullRef
435434
case _ => genConstant(value); generatedType = tpeTK(tree)
436435
}
437436

@@ -490,7 +489,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
490489
val thrownType = expectedType
491490
// `throw null` is valid although scala.Null (as defined in src/libray-aux) isn't a subtype of Throwable.
492491
// Similarly for scala.Nothing (again, as defined in src/libray-aux).
493-
assert(thrownType.isNullType || thrownType.isNothingType || thrownType.asClassBType.isSubtypeOf(ThrowableReference))
492+
assert(thrownType.isNullType || thrownType.isNothingType || thrownType.asClassBType.isSubtypeOf(jlThrowableRef))
494493
emit(asm.Opcodes.ATHROW)
495494
end genAdaptAndSendToDest
496495

@@ -674,8 +673,8 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
674673
else if (l.isPrimitive) {
675674
bc drop l
676675
if (cast) {
677-
mnode.visitTypeInsn(asm.Opcodes.NEW, classCastExceptionReference.internalName)
678-
bc dup ObjectReference
676+
mnode.visitTypeInsn(asm.Opcodes.NEW, jlClassCastExceptionRef.internalName)
677+
bc dup ObjectRef
679678
emit(asm.Opcodes.ATHROW)
680679
} else {
681680
bc boolconst false
@@ -725,7 +724,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
725724
lineNumber(app)
726725
app match {
727726
case Apply(_, args) if app.symbol eq defn.newArrayMethod =>
728-
val List(elemClaz, Literal(c: Constant), ArrayValue(_, dims)) = args
727+
val List(elemClaz, Literal(c: Constant), ArrayValue(_, dims)) = args: @unchecked
729728

730729
generatedType = toTypeKind(c.typeValue)
731730
mkArrayConstructorCall(generatedType.asArrayBType, app, dims)
@@ -777,15 +776,15 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
777776
val nativeKind = tpeTK(expr)
778777
genLoad(expr, nativeKind)
779778
val MethodNameAndType(mname, methodType) = asmBoxTo(nativeKind)
780-
bc.invokestatic(BoxesRunTime.internalName, mname, methodType.descriptor, itf = false)
779+
bc.invokestatic(srBoxesRuntimeRef.internalName, mname, methodType.descriptor, itf = false)
781780
generatedType = boxResultType(fun.symbol) // was toTypeKind(fun.symbol.tpe.resultType)
782781

783782
case Apply(fun, List(expr)) if Erasure.Boxing.isUnbox(fun.symbol) && fun.symbol.denot.owner != defn.UnitModuleClass =>
784783
genLoad(expr)
785784
val boxType = unboxResultType(fun.symbol) // was toTypeKind(fun.symbol.owner.linkedClassOfClass.tpe)
786785
generatedType = boxType
787786
val MethodNameAndType(mname, methodType) = asmUnboxTo(boxType)
788-
bc.invokestatic(BoxesRunTime.internalName, mname, methodType.descriptor, itf = false)
787+
bc.invokestatic(srBoxesRuntimeRef.internalName, mname, methodType.descriptor, itf = false)
789788

790789
case app @ Apply(fun, args) =>
791790
val sym = fun.symbol
@@ -802,7 +801,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
802801
if (invokeStyle.hasInstance) genLoadQualifier(fun)
803802
genLoadArguments(args, paramTKs(app))
804803

805-
val DesugaredSelect(qual, name) = fun // fun is a Select, also checked in genLoadQualifier
804+
val DesugaredSelect(qual, name) = fun: @unchecked // fun is a Select, also checked in genLoadQualifier
806805
val isArrayClone = name == nme.clone_ && qual.tpe.widen.isInstanceOf[JavaArrayType]
807806
if (isArrayClone) {
808807
// Special-case Array.clone, introduced in 36ef60e. The goal is to generate this call
@@ -845,7 +844,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
845844
} // end of genApply()
846845

847846
private def genArrayValue(av: tpd.JavaSeqLiteral): BType = {
848-
val ArrayValue(tpt, elems) = av
847+
val ArrayValue(tpt, elems) = av: @unchecked
849848

850849
lineNumber(av)
851850
genArray(elems, tpt)
@@ -1237,7 +1236,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
12371236
liftStringConcat(tree) match {
12381237
// Optimization for expressions of the form "" + x
12391238
case List(Literal(Constant("")), arg) =>
1240-
genLoad(arg, ObjectReference)
1239+
genLoad(arg, ObjectRef)
12411240
genCallMethod(defn.String_valueOf_Object, InvokeStyle.Static)
12421241

12431242
case concatenations =>
@@ -1409,7 +1408,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
14091408

14101409
/* Generate the scala ## method. */
14111410
def genScalaHash(tree: Tree): BType = {
1412-
genLoad(tree, ObjectReference)
1411+
genLoad(tree, ObjectRef)
14131412
genCallMethod(NoSymbol, InvokeStyle.Static) // used to dispatch ## on primitives to ScalaRuntime.hash. Should be implemented by a miniphase
14141413
}
14151414

@@ -1508,8 +1507,8 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
15081507
val nonNullSide = if (ScalaPrimitivesOps.isReferenceEqualityOp(code)) ifOneIsNull(l, r) else null
15091508
if (nonNullSide != null) {
15101509
// special-case reference (in)equality test for null (null eq x, x eq null)
1511-
genLoad(nonNullSide, ObjectReference)
1512-
genCZJUMP(success, failure, op, ObjectReference, targetIfNoJump)
1510+
genLoad(nonNullSide, ObjectRef)
1511+
genCZJUMP(success, failure, op, ObjectRef, targetIfNoJump)
15131512
} else {
15141513
val tk = tpeTK(l).maxType(tpeTK(r))
15151514
genLoad(l, tk)
@@ -1530,7 +1529,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
15301529
import ScalaPrimitivesOps.{ ZNOT, ZAND, ZOR, EQ }
15311530

15321531
// lhs and rhs of test
1533-
lazy val DesugaredSelect(lhs, _) = fun
1532+
lazy val DesugaredSelect(lhs, _) = fun: @unchecked
15341533
val rhs = if (args.isEmpty) tpd.EmptyTree else args.head // args.isEmpty only for ZNOT
15351534

15361535
def genZandOrZor(and: Boolean): Unit = {
@@ -1627,42 +1626,42 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
16271626
} else defn.BoxesRunTimeModule_externalEquals
16281627
}
16291628

1630-
genLoad(l, ObjectReference)
1631-
genLoad(r, ObjectReference)
1629+
genLoad(l, ObjectRef)
1630+
genLoad(r, ObjectRef)
16321631
genCallMethod(equalsMethod, InvokeStyle.Static)
16331632
genCZJUMP(success, failure, Primitives.NE, BOOL, targetIfNoJump)
16341633
}
16351634
else {
16361635
if (isNull(l)) {
16371636
// null == expr -> expr eq null
1638-
genLoad(r, ObjectReference)
1639-
genCZJUMP(success, failure, Primitives.EQ, ObjectReference, targetIfNoJump)
1637+
genLoad(r, ObjectRef)
1638+
genCZJUMP(success, failure, Primitives.EQ, ObjectRef, targetIfNoJump)
16401639
} else if (isNull(r)) {
16411640
// expr == null -> expr eq null
1642-
genLoad(l, ObjectReference)
1643-
genCZJUMP(success, failure, Primitives.EQ, ObjectReference, targetIfNoJump)
1641+
genLoad(l, ObjectRef)
1642+
genCZJUMP(success, failure, Primitives.EQ, ObjectRef, targetIfNoJump)
16441643
} else if (isNonNullExpr(l)) {
16451644
// SI-7852 Avoid null check if L is statically non-null.
1646-
genLoad(l, ObjectReference)
1647-
genLoad(r, ObjectReference)
1645+
genLoad(l, ObjectRef)
1646+
genLoad(r, ObjectRef)
16481647
genCallMethod(defn.Any_equals, InvokeStyle.Virtual)
16491648
genCZJUMP(success, failure, Primitives.NE, BOOL, targetIfNoJump)
16501649
} else {
16511650
// l == r -> if (l eq null) r eq null else l.equals(r)
1652-
val eqEqTempLocal = locals.makeLocal(ObjectReference, nme.EQEQ_LOCAL_VAR.mangledString, defn.ObjectType, r.span)
1651+
val eqEqTempLocal = locals.makeLocal(ObjectRef, nme.EQEQ_LOCAL_VAR.mangledString, defn.ObjectType, r.span)
16531652
val lNull = new asm.Label
16541653
val lNonNull = new asm.Label
16551654

1656-
genLoad(l, ObjectReference)
1657-
genLoad(r, ObjectReference)
1655+
genLoad(l, ObjectRef)
1656+
genLoad(r, ObjectRef)
16581657
locals.store(eqEqTempLocal)
1659-
bc dup ObjectReference
1660-
genCZJUMP(lNull, lNonNull, Primitives.EQ, ObjectReference, targetIfNoJump = lNull)
1658+
bc dup ObjectRef
1659+
genCZJUMP(lNull, lNonNull, Primitives.EQ, ObjectRef, targetIfNoJump = lNull)
16611660

16621661
markProgramPoint(lNull)
1663-
bc drop ObjectReference
1662+
bc drop ObjectRef
16641663
locals.load(eqEqTempLocal)
1665-
genCZJUMP(success, failure, Primitives.EQ, ObjectReference, targetIfNoJump = lNonNull)
1664+
genCZJUMP(success, failure, Primitives.EQ, ObjectRef, targetIfNoJump = lNonNull)
16661665

16671666
markProgramPoint(lNonNull)
16681667
locals.load(eqEqTempLocal)
@@ -1753,9 +1752,9 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
17531752

17541753
val metafactory =
17551754
if (flags != 0)
1756-
lambdaMetaFactoryAltMetafactoryHandle // altMetafactory required to be able to pass the flags and additional arguments if needed
1755+
jliLambdaMetaFactoryAltMetafactoryHandle // altMetafactory required to be able to pass the flags and additional arguments if needed
17571756
else
1758-
lambdaMetaFactoryMetafactoryHandle
1757+
jliLambdaMetaFactoryMetafactoryHandle
17591758

17601759
bc.jmethod.visitInvokeDynamicInsn(methodName, desc, metafactory, bsmArgs: _*)
17611760

@@ -1772,27 +1771,5 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
17721771
private def isEmittedInterface(sym: Symbol): Boolean = sym.isInterface ||
17731772
sym.is(JavaDefined) && (toDenot(sym).isAnnotation || sym.is(ModuleClass) && (sym.companionClass.is(PureInterface)) || sym.companionClass.is(Trait))
17741773

1775-
}
17761774

1777-
object BCodeBodyBuilder {
1778-
val lambdaMetaFactoryMetafactoryHandle = new Handle(
1779-
Opcodes.H_INVOKESTATIC,
1780-
"java/lang/invoke/LambdaMetafactory",
1781-
"metafactory",
1782-
"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;",
1783-
/* itf = */ false)
1784-
1785-
val lambdaMetaFactoryAltMetafactoryHandle = new Handle(
1786-
Opcodes.H_INVOKESTATIC,
1787-
"java/lang/invoke/LambdaMetafactory",
1788-
"altMetafactory",
1789-
"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;",
1790-
/* itf = */ false)
1791-
1792-
val lambdaDeserializeBootstrapHandle = new Handle(
1793-
Opcodes.H_INVOKESTATIC,
1794-
"scala/runtime/LambdaDeserialize",
1795-
"bootstrap",
1796-
"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;",
1797-
/* itf = */ false)
17981775
}

0 commit comments

Comments
 (0)