Return only onStack/none stackValues in results
This commit is contained in:
committed by
Dmitry Petrov
parent
a51efaacc9
commit
24863a84c4
+5
-8
@@ -194,12 +194,8 @@ class ExpressionCodegen(
|
|||||||
}
|
}
|
||||||
return StackValue.onStack(callable.returnType)
|
return StackValue.onStack(callable.returnType)
|
||||||
}
|
}
|
||||||
|
|
||||||
return expression.onStack
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: BlockInfo): StackValue {
|
override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: BlockInfo): StackValue {
|
||||||
throw AssertionError("Instruction should've been lowered before code generation: ${expression.render()}")
|
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 {
|
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 {
|
override fun visitSetField(expression: IrSetField, data: BlockInfo): StackValue {
|
||||||
val fieldValue = generateFieldValue(expression, data)
|
val fieldValue = generateFieldValue(expression, data)
|
||||||
fieldValue.store(expression.value.accept(this, data), mv)
|
fieldValue.store(expression.value.accept(this, data), mv)
|
||||||
return expression.onStack
|
return none()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun generateLocal(descriptor: CallableDescriptor, type: Type): StackValue {
|
private fun generateLocal(descriptor: CallableDescriptor, type: Type): StackValue {
|
||||||
@@ -278,8 +276,7 @@ class ExpressionCodegen(
|
|||||||
override fun visitSetVariable(expression: IrSetVariable, data: BlockInfo): StackValue {
|
override fun visitSetVariable(expression: IrSetVariable, data: BlockInfo): StackValue {
|
||||||
val value = expression.value.accept(this, data)
|
val value = expression.value.accept(this, data)
|
||||||
StackValue.local(frame.getIndex(expression.descriptor), expression.descriptor.asmType).store(value, mv)
|
StackValue.local(frame.getIndex(expression.descriptor), expression.descriptor.asmType).store(value, mv)
|
||||||
//UNIT?
|
return none()
|
||||||
return expression.onStack
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <T> visitConst(expression: IrConst<T>, data: BlockInfo): StackValue {
|
override fun <T> visitConst(expression: IrConst<T>, data: BlockInfo): StackValue {
|
||||||
|
|||||||
Reference in New Issue
Block a user