Skip to content

Commit b4f9188

Browse files
authored
Merge pull request lampepfl#29 from lampepfl/allanrenucci-patch-1
Polish
2 parents 0c6b954 + d56aa2a commit b4f9188

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1405,18 +1405,19 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
14051405
def genInvokeDynamicLambda(ctor: Symbol, lambdaTarget: Symbol, environmentSize: Int, functionalInterface: Symbol): BType = {
14061406
debuglog(s"Using invokedynamic rather than `new ${ctor.owner}`")
14071407
val generatedType = classBTypeFromSymbol(functionalInterface)
1408+
val isInterface = lambdaTarget.owner.isInterface
14081409
val invokeStyle =
14091410
if (lambdaTarget.isStaticMember) asm.Opcodes.H_INVOKESTATIC
14101411
else if (lambdaTarget.isPrivate || lambdaTarget.isClassConstructor) asm.Opcodes.H_INVOKESPECIAL
1411-
else if (lambdaTarget.owner.isInterface) asm.Opcodes.H_INVOKEINTERFACE
1412+
else if (isInterface) asm.Opcodes.H_INVOKEINTERFACE
14121413
else asm.Opcodes.H_INVOKEVIRTUAL
14131414

14141415
val targetHandle =
14151416
new asm.Handle(invokeStyle,
14161417
classBTypeFromSymbol(lambdaTarget.owner).internalName,
14171418
lambdaTarget.name.mangledString,
14181419
asmMethodType(lambdaTarget).descriptor,
1419-
invokeStyle == asm.Opcodes.H_INVOKEINTERFACE)
1420+
isInterface)
14201421

14211422
val (a,b) = lambdaTarget.info.paramTypes.splitAt(environmentSize)
14221423
var (capturedParamsTypes, lambdaParamTypes) = if(int.doLabmdasFollowJVMMetafactoryOrder) (a,b) else (b,a)
@@ -1447,6 +1448,6 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
14471448
new asm.Handle(asm.Opcodes.H_INVOKESTATIC,
14481449
int.LambdaMetaFactory.javaBinaryName, int.MetafactoryName,
14491450
"(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;",
1450-
false)
1451+
int.LambdaMetaFactory.isInterface)
14511452

14521453
}

0 commit comments

Comments
 (0)