[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 {
val itCpp = irGet(valueParameters.single())
val itCpp = valueParameters.single()
if (traceCleaners) {
+irCall(symbols.println).apply {
putValueArgument(0,
@@ -214,7 +214,7 @@ internal class CStructVarClassGenerator(
.filterIsInstance<IrSimpleFunction>()
.single { it.name.toString() == "unref" }
+irCall(unref).apply {
dispatchReceiver = itCpp
dispatchReceiver = this@irBlockBody.irGet(itCpp)
}
} else {
val destroy = cppClass.declarations
@@ -222,7 +222,7 @@ internal class CStructVarClassGenerator(
.singleOrNull() { it.name.toString() == "__destroy__" }
if (destroy!= null) {
+irCall(destroy).apply {
dispatchReceiver = itCpp
dispatchReceiver = this@irBlockBody.irGet(itCpp)
}
}
val nativeHeap = symbols.nativeHeap
@@ -233,7 +233,7 @@ internal class CStructVarClassGenerator(
dispatchReceiver = irGetObject(nativeHeap)
putValueArgument(0,
irCall(symbols.interopNativePointedGetRawPointer).apply {
extensionReceiver = itCpp
extensionReceiver = this@irBlockBody.irGet(itCpp)
}
)
}