[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:
committed by
Space Team
parent
8e3022452e
commit
255d4fa829
+4
-4
@@ -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)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user