@@ -39,7 +39,6 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
39
39
import DottyBackendInterface .symExtensions
40
40
import bTypes ._
41
41
import coreBTypes ._
42
- import BCodeBodyBuilder ._
43
42
44
43
protected val primitives : DottyPrimitives
45
44
@@ -359,7 +358,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
359
358
// but I was able to derrive it by reading
360
359
// AbstractValidatingLambdaMetafactory.validateMetafactoryArgs
361
360
362
- val DesugaredSelect (prefix, _) = fun
361
+ val DesugaredSelect (prefix, _) = fun : @ unchecked
363
362
genLoad(prefix)
364
363
}
365
364
@@ -431,7 +430,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
431
430
if (value.tag != UnitTag ) (value.tag, expectedType) match {
432
431
case (IntTag , LONG ) => bc.lconst(value.longValue); generatedType = LONG
433
432
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
435
434
case _ => genConstant(value); generatedType = tpeTK(tree)
436
435
}
437
436
@@ -490,7 +489,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
490
489
val thrownType = expectedType
491
490
// `throw null` is valid although scala.Null (as defined in src/libray-aux) isn't a subtype of Throwable.
492
491
// 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 ))
494
493
emit(asm.Opcodes .ATHROW )
495
494
end genAdaptAndSendToDest
496
495
@@ -674,8 +673,8 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
674
673
else if (l.isPrimitive) {
675
674
bc drop l
676
675
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
679
678
emit(asm.Opcodes .ATHROW )
680
679
} else {
681
680
bc boolconst false
@@ -725,7 +724,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
725
724
lineNumber(app)
726
725
app match {
727
726
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
729
728
730
729
generatedType = toTypeKind(c.typeValue)
731
730
mkArrayConstructorCall(generatedType.asArrayBType, app, dims)
@@ -777,15 +776,15 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
777
776
val nativeKind = tpeTK(expr)
778
777
genLoad(expr, nativeKind)
779
778
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 )
781
780
generatedType = boxResultType(fun.symbol) // was toTypeKind(fun.symbol.tpe.resultType)
782
781
783
782
case Apply (fun, List (expr)) if Erasure .Boxing .isUnbox(fun.symbol) && fun.symbol.denot.owner != defn.UnitModuleClass =>
784
783
genLoad(expr)
785
784
val boxType = unboxResultType(fun.symbol) // was toTypeKind(fun.symbol.owner.linkedClassOfClass.tpe)
786
785
generatedType = boxType
787
786
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 )
789
788
790
789
case app @ Apply (fun, args) =>
791
790
val sym = fun.symbol
@@ -802,7 +801,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
802
801
if (invokeStyle.hasInstance) genLoadQualifier(fun)
803
802
genLoadArguments(args, paramTKs(app))
804
803
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
806
805
val isArrayClone = name == nme.clone_ && qual.tpe.widen.isInstanceOf [JavaArrayType ]
807
806
if (isArrayClone) {
808
807
// Special-case Array.clone, introduced in 36ef60e. The goal is to generate this call
@@ -845,7 +844,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
845
844
} // end of genApply()
846
845
847
846
private def genArrayValue (av : tpd.JavaSeqLiteral ): BType = {
848
- val ArrayValue (tpt, elems) = av
847
+ val ArrayValue (tpt, elems) = av : @ unchecked
849
848
850
849
lineNumber(av)
851
850
genArray(elems, tpt)
@@ -1237,7 +1236,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
1237
1236
liftStringConcat(tree) match {
1238
1237
// Optimization for expressions of the form "" + x
1239
1238
case List (Literal (Constant (" " )), arg) =>
1240
- genLoad(arg, ObjectReference )
1239
+ genLoad(arg, ObjectRef )
1241
1240
genCallMethod(defn.String_valueOf_Object , InvokeStyle .Static )
1242
1241
1243
1242
case concatenations =>
@@ -1409,7 +1408,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
1409
1408
1410
1409
/* Generate the scala ## method. */
1411
1410
def genScalaHash (tree : Tree ): BType = {
1412
- genLoad(tree, ObjectReference )
1411
+ genLoad(tree, ObjectRef )
1413
1412
genCallMethod(NoSymbol , InvokeStyle .Static ) // used to dispatch ## on primitives to ScalaRuntime.hash. Should be implemented by a miniphase
1414
1413
}
1415
1414
@@ -1508,8 +1507,8 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
1508
1507
val nonNullSide = if (ScalaPrimitivesOps .isReferenceEqualityOp(code)) ifOneIsNull(l, r) else null
1509
1508
if (nonNullSide != null ) {
1510
1509
// 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)
1513
1512
} else {
1514
1513
val tk = tpeTK(l).maxType(tpeTK(r))
1515
1514
genLoad(l, tk)
@@ -1530,7 +1529,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
1530
1529
import ScalaPrimitivesOps .{ ZNOT , ZAND , ZOR , EQ }
1531
1530
1532
1531
// lhs and rhs of test
1533
- lazy val DesugaredSelect (lhs, _) = fun
1532
+ lazy val DesugaredSelect (lhs, _) = fun : @ unchecked
1534
1533
val rhs = if (args.isEmpty) tpd.EmptyTree else args.head // args.isEmpty only for ZNOT
1535
1534
1536
1535
def genZandOrZor (and : Boolean ): Unit = {
@@ -1627,42 +1626,42 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
1627
1626
} else defn.BoxesRunTimeModule_externalEquals
1628
1627
}
1629
1628
1630
- genLoad(l, ObjectReference )
1631
- genLoad(r, ObjectReference )
1629
+ genLoad(l, ObjectRef )
1630
+ genLoad(r, ObjectRef )
1632
1631
genCallMethod(equalsMethod, InvokeStyle .Static )
1633
1632
genCZJUMP(success, failure, Primitives .NE , BOOL , targetIfNoJump)
1634
1633
}
1635
1634
else {
1636
1635
if (isNull(l)) {
1637
1636
// 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)
1640
1639
} else if (isNull(r)) {
1641
1640
// 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)
1644
1643
} else if (isNonNullExpr(l)) {
1645
1644
// 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 )
1648
1647
genCallMethod(defn.Any_equals , InvokeStyle .Virtual )
1649
1648
genCZJUMP(success, failure, Primitives .NE , BOOL , targetIfNoJump)
1650
1649
} else {
1651
1650
// 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)
1653
1652
val lNull = new asm.Label
1654
1653
val lNonNull = new asm.Label
1655
1654
1656
- genLoad(l, ObjectReference )
1657
- genLoad(r, ObjectReference )
1655
+ genLoad(l, ObjectRef )
1656
+ genLoad(r, ObjectRef )
1658
1657
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)
1661
1660
1662
1661
markProgramPoint(lNull)
1663
- bc drop ObjectReference
1662
+ bc drop ObjectRef
1664
1663
locals.load(eqEqTempLocal)
1665
- genCZJUMP(success, failure, Primitives .EQ , ObjectReference , targetIfNoJump = lNonNull)
1664
+ genCZJUMP(success, failure, Primitives .EQ , ObjectRef , targetIfNoJump = lNonNull)
1666
1665
1667
1666
markProgramPoint(lNonNull)
1668
1667
locals.load(eqEqTempLocal)
@@ -1753,9 +1752,9 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
1753
1752
1754
1753
val metafactory =
1755
1754
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
1757
1756
else
1758
- lambdaMetaFactoryMetafactoryHandle
1757
+ jliLambdaMetaFactoryMetafactoryHandle
1759
1758
1760
1759
bc.jmethod.visitInvokeDynamicInsn(methodName, desc, metafactory, bsmArgs : _* )
1761
1760
@@ -1772,27 +1771,5 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
1772
1771
private def isEmittedInterface (sym : Symbol ): Boolean = sym.isInterface ||
1773
1772
sym.is(JavaDefined ) && (toDenot(sym).isAnnotation || sym.is(ModuleClass ) && (sym.companionClass.is(PureInterface )) || sym.companionClass.is(Trait ))
1774
1773
1775
- }
1776
1774
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 )
1798
1775
}
0 commit comments