JVM: remove unused DefaultLambda.parameterOffsetsInDefault

This commit is contained in:
pyos
2021-05-25 18:12:19 +02:00
committed by max-kammerer
parent 8a3af851d9
commit 4cae880b44
3 changed files with 8 additions and 11 deletions
@@ -440,8 +440,6 @@ abstract class InlineCodegen<out T : BaseExpressionCodegen>(
paramIndex, paramIndex,
ValueKind.DEFAULT_LAMBDA_CAPTURED_PARAMETER ValueKind.DEFAULT_LAMBDA_CAPTURED_PARAMETER
) )
defaultLambda.parameterOffsetsInDefault.add(invocationParamBuilder.nextParameterOffset)
} }
} }
@@ -83,12 +83,9 @@ abstract class DefaultLambda(
val offset: Int, val offset: Int,
val needReification: Boolean val needReification: Boolean
) : LambdaInfo(isCrossinline) { ) : LambdaInfo(isCrossinline) {
final override var isBoundCallableReference by Delegates.notNull<Boolean>() final override var isBoundCallableReference by Delegates.notNull<Boolean>()
private set private set
val parameterOffsetsInDefault: MutableList<Int> = arrayListOf()
final override lateinit var invokeMethod: Method final override lateinit var invokeMethod: Method
private set private set
@@ -113,8 +110,10 @@ abstract class DefaultLambda(
} }
capturedVars = capturedVars =
if (isFunctionReference || isPropertyReference) if (isFunctionReference || isPropertyReference)
constructor?.desc?.let { Type.getArgumentTypes(it) }?.singleOrNull()?.let { capturedArgs.singleOrNull()?.let {
originalBoundReceiverType = it if (AsmUtil.isPrimitive(it)) {
originalBoundReceiverType = it
}
listOf(capturedParamDesc(AsmUtil.RECEIVER_PARAMETER_NAME, AsmUtil.boxType(it), isSuspend = false)) listOf(capturedParamDesc(AsmUtil.RECEIVER_PARAMETER_NAME, AsmUtil.boxType(it), isSuspend = false))
} ?: emptyList() } ?: emptyList()
else else
@@ -425,10 +425,10 @@ class MethodInliner(
if (DEFAULT_LAMBDA_FAKE_CALL == owner) { if (DEFAULT_LAMBDA_FAKE_CALL == owner) {
val index = name.substringAfter(DEFAULT_LAMBDA_FAKE_CALL).toInt() val index = name.substringAfter(DEFAULT_LAMBDA_FAKE_CALL).toInt()
val lambda = getFunctionalArgumentIfExists(index) as DefaultLambda val lambda = getFunctionalArgumentIfExists(index) as DefaultLambda
lambda.parameterOffsetsInDefault.zip(lambda.capturedVars).asReversed().forEach { (_, captured) -> for (captured in lambda.capturedVars.asReversed()) {
val originalBoundReceiverType = lambda.originalBoundReceiverType lambda.originalBoundReceiverType?.let {
if (lambda.isBoundCallableReference && AsmUtil.isPrimitive(originalBoundReceiverType)) { // The receiver is the only captured value; it needs to be boxed.
StackValue.onStack(originalBoundReceiverType!!).put(captured.type, InstructionAdapter(this)) StackValue.onStack(it).put(captured.type, InstructionAdapter(this))
} }
super.visitFieldInsn( super.visitFieldInsn(
Opcodes.PUTSTATIC, Opcodes.PUTSTATIC,