From b711f14ae9aa8f8033795f62de0702cc05f0e068 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Wed, 22 Jan 2020 21:25:29 +0300 Subject: [PATCH] [IR] Supported IrFunctionReference.reflectionTarget (cherry picked from commit fbaf57dab7a2cf25dcc469abe56c56ae41a5a2bb) --- .../org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt | 3 ++- .../jetbrains/kotlin/backend/konan/lower/BridgesBuilding.kt | 3 ++- .../kotlin/backend/konan/lower/DelegationLowering.kt | 6 ++++-- .../jetbrains/kotlin/backend/konan/lower/InteropLowering.kt | 3 ++- .../jetbrains/kotlin/backend/konan/lower/TestProcessor.kt | 6 ++++-- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt index a32abf3a8d2..294f8e5bcc8 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt @@ -535,7 +535,8 @@ internal fun KotlinStubs.generateCFunctionPointer( expression.endOffset, expression.type, fakeFunction.symbol, - 0 + typeArgumentsCount = 0, + reflectionTarget = null ) } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/BridgesBuilding.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/BridgesBuilding.kt index 3162e38dca8..798bb4c9c9b 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/BridgesBuilding.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/BridgesBuilding.kt @@ -116,7 +116,8 @@ internal class WorkersBridgesBuilding(val context: Context) : DeclarationContain endOffset = job.endOffset, type = job.type, symbol = bridge.symbol, - typeArgumentsCount = 0) + typeArgumentsCount = 0, + reflectionTarget = null) ) return expression } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DelegationLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DelegationLowering.kt index 2ed3ca867a1..4f37655a5f0 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DelegationLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DelegationLowering.kt @@ -211,7 +211,8 @@ internal class PropertyDelegationLowering(val context: Context) : FileLoweringPa type = getterKFunctionType, symbol = expression.getter!!, typeArgumentsCount = getter.typeParameters.size, - valueArgumentsCount = getter.valueParameters.size + valueArgumentsCount = getter.valueParameters.size, + reflectionTarget = expression.getter!! ).apply { this.dispatchReceiver = dispatchReceiver?.let { irGet(it) } this.extensionReceiver = extensionReceiver?.let { irGet(it) } @@ -233,7 +234,8 @@ internal class PropertyDelegationLowering(val context: Context) : FileLoweringPa type = setterKFunctionType, symbol = expression.setter!!, typeArgumentsCount = setter.typeParameters.size, - valueArgumentsCount = setter.valueParameters.size + valueArgumentsCount = setter.valueParameters.size, + reflectionTarget = expression.setter!! ).apply { this.dispatchReceiver = dispatchReceiver?.let { irGet(it) } this.extensionReceiver = extensionReceiver?.let { irGet(it) } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt index ca90ad21813..b841854fde8 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt @@ -1038,7 +1038,8 @@ private class InteropTransformer(val context: Context, override val irFile: IrFi builder.startOffset, builder.endOffset, symbols.executeImpl.owner.valueParameters[3].type, targetSymbol, - typeArgumentsCount = 0) + typeArgumentsCount = 0, + reflectionTarget = null) builder.irCall(symbols.executeImpl).apply { putValueArgument(0, expression.dispatchReceiver) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt index 8c918cda1b6..424240e7698 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt @@ -107,7 +107,8 @@ internal class TestProcessor (val context: Context) { registerTestCase.valueParameters[1].type, it.function.symbol, typeArgumentsCount = 0, - valueArgumentsCount = 0)) + valueArgumentsCount = 0, + reflectionTarget = null)) putValueArgument(2, irBoolean(it.ignored)) } } else { @@ -127,7 +128,8 @@ internal class TestProcessor (val context: Context) { registerFunction.valueParameters[1].type, it.function.symbol, typeArgumentsCount = 0, - valueArgumentsCount = 0)) + valueArgumentsCount = 0, + reflectionTarget = null)) } } }