diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/BoxedBasicValue.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/BoxedBasicValue.kt index 3224938157a..2a6f2f30af7 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/BoxedBasicValue.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/BoxedBasicValue.kt @@ -56,7 +56,7 @@ class TaintedBoxedValue(private val boxedBasicValue: CleanBoxedValue) : BoxedBas class BoxedValueDescriptor( - private val boxedType: Type, + boxedType: Type, val boxingInsn: AbstractInsnNode, val progressionIterator: ProgressionIteratorBasicValue?, val generationState: GenerationState diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/RedundantBoxingMethodTransformer.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/RedundantBoxingMethodTransformer.kt index 46646e36112..5844d1f8e0c 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/RedundantBoxingMethodTransformer.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/RedundantBoxingMethodTransformer.kt @@ -38,6 +38,10 @@ import java.util.* class RedundantBoxingMethodTransformer(private val generationState: GenerationState) : MethodTransformer() { override fun transform(internalClassName: String, node: MethodNode) { + val insns = node.instructions.toArray() + if (insns.none { it.isBoxing(generationState) || it.isMethodInsnWith(Opcodes.INVOKEINTERFACE) { name == "next" } }) + return + val interpreter = RedundantBoxingInterpreter(node.instructions, generationState) val frames = analyze(internalClassName, node, interpreter)