From 255d4fa8294451ca5a18b591844ff508c94bffec Mon Sep 17 00:00:00 2001 From: Vladimir Sukharev Date: Tue, 14 Feb 2023 20:31:13 +0000 Subject: [PATCH] [K/N] Don't reuse irGet node in cleanerField tree Merge-request: KT-MR-8831 Merged-by: Vladimir Sukharev --- .../konan/ir/interop/cstruct/CStructVarClassGenerator.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/cstruct/CStructVarClassGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/cstruct/CStructVarClassGenerator.kt index 42042693c85..6dde410c463 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/cstruct/CStructVarClassGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/cstruct/CStructVarClassGenerator.kt @@ -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() .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) } ) }