From 24863a84c40fef8e268f6a056fc30be5f4c1120c Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Fri, 30 Sep 2016 13:41:27 +0300 Subject: [PATCH] Return only onStack/none stackValues in results --- .../kotlin/backend/jvm/codegen/ExpressionCodegen.kt | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index bed3647ed12..3a48f0f485f 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -194,12 +194,8 @@ class ExpressionCodegen( } return StackValue.onStack(callable.returnType) } - - return expression.onStack } - - override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: BlockInfo): StackValue { throw AssertionError("Instruction should've been lowered before code generation: ${expression.render()}") } @@ -253,13 +249,15 @@ class ExpressionCodegen( } override fun visitGetField(expression: IrGetField, data: BlockInfo): StackValue { - return generateFieldValue(expression, data) + val value = generateFieldValue(expression, data) + value.put(value.type, mv) + return onStack(value.type) } override fun visitSetField(expression: IrSetField, data: BlockInfo): StackValue { val fieldValue = generateFieldValue(expression, data) fieldValue.store(expression.value.accept(this, data), mv) - return expression.onStack + return none() } private fun generateLocal(descriptor: CallableDescriptor, type: Type): StackValue { @@ -278,8 +276,7 @@ class ExpressionCodegen( override fun visitSetVariable(expression: IrSetVariable, data: BlockInfo): StackValue { val value = expression.value.accept(this, data) StackValue.local(frame.getIndex(expression.descriptor), expression.descriptor.asmType).store(value, mv) - //UNIT? - return expression.onStack + return none() } override fun visitConst(expression: IrConst, data: BlockInfo): StackValue {