[K/N] Don't reuse irGet node in cleanerField tree

Merge-request: KT-MR-8831
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2023-02-14 20:31:13 +00:00
committed by Space Team
parent 8e3022452e
commit 255d4fa829
@@ -200,7 +200,7 @@ internal class CStructVarClassGenerator(
} }
) )
body = irBlockBody { body = irBlockBody {
val itCpp = irGet(valueParameters.single()) val itCpp = valueParameters.single()
if (traceCleaners) { if (traceCleaners) {
+irCall(symbols.println).apply { +irCall(symbols.println).apply {
putValueArgument(0, putValueArgument(0,
@@ -214,7 +214,7 @@ internal class CStructVarClassGenerator(
.filterIsInstance<IrSimpleFunction>() .filterIsInstance<IrSimpleFunction>()
.single { it.name.toString() == "unref" } .single { it.name.toString() == "unref" }
+irCall(unref).apply { +irCall(unref).apply {
dispatchReceiver = itCpp dispatchReceiver = this@irBlockBody.irGet(itCpp)
} }
} else { } else {
val destroy = cppClass.declarations val destroy = cppClass.declarations
@@ -222,7 +222,7 @@ internal class CStructVarClassGenerator(
.singleOrNull() { it.name.toString() == "__destroy__" } .singleOrNull() { it.name.toString() == "__destroy__" }
if (destroy!= null) { if (destroy!= null) {
+irCall(destroy).apply { +irCall(destroy).apply {
dispatchReceiver = itCpp dispatchReceiver = this@irBlockBody.irGet(itCpp)
} }
} }
val nativeHeap = symbols.nativeHeap val nativeHeap = symbols.nativeHeap
@@ -233,7 +233,7 @@ internal class CStructVarClassGenerator(
dispatchReceiver = irGetObject(nativeHeap) dispatchReceiver = irGetObject(nativeHeap)
putValueArgument(0, putValueArgument(0,
irCall(symbols.interopNativePointedGetRawPointer).apply { irCall(symbols.interopNativePointedGetRawPointer).apply {
extensionReceiver = itCpp extensionReceiver = this@irBlockBody.irGet(itCpp)
} }
) )
} }