From 740d50ca093f8c92c2ff647d0f12f48386b88f92 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Fri, 30 Oct 2020 09:45:01 +0300 Subject: [PATCH] Extract function in ObjCExportCodeGenerator --- .../objcexport/ObjCExportCodeGenerator.kt | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt index e6dc602de5f..2cd06a06151 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/objcexport/ObjCExportCodeGenerator.kt @@ -1123,11 +1123,9 @@ private fun ObjCExportCodeGenerator.createMethodVirtualAdapter( val selector = namer.getSelector(baseMethod.descriptor) val methodBridge = mapper.bridgeMethod(baseMethod.descriptor) - val objCToKotlin = constPointer(generateObjCImp(baseMethod, baseMethod, methodBridge, isVirtual = true)) + val imp = generateObjCImp(baseMethod, baseMethod, methodBridge, isVirtual = true) - selectorsToDefine[selector] = methodBridge - - return ObjCToKotlinMethodAdapter(selector, getEncoding(methodBridge), objCToKotlin) + return objCToKotlinMethodAdapter(selector, methodBridge, imp) } private fun ObjCExportCodeGenerator.createMethodAdapter( @@ -1148,12 +1146,10 @@ private fun ObjCExportCodeGenerator.createMethodAdapter( val selectorName = namer.getSelector(request.base.descriptor) val methodBridge = mapper.bridgeMethod(request.base.descriptor) - val objCEncoding = getEncoding(methodBridge) - val objCToKotlin = constPointer(generateObjCImp(request.implementation, request.base, methodBridge)) - selectorsToDefine[selectorName] = methodBridge + val imp = generateObjCImp(request.implementation, request.base, methodBridge) - ObjCToKotlinMethodAdapter(selectorName, objCEncoding, objCToKotlin) + objCToKotlinMethodAdapter(selectorName, methodBridge, imp) } private fun ObjCExportCodeGenerator.createConstructorAdapter( @@ -1165,12 +1161,9 @@ private fun ObjCExportCodeGenerator.createArrayConstructorAdapter( ): ObjCExportCodeGenerator.ObjCToKotlinMethodAdapter { val selectorName = namer.getSelector(irConstructor.descriptor) val methodBridge = mapper.bridgeMethod(irConstructor.descriptor) - val objCEncoding = getEncoding(methodBridge) - val objCToKotlin = constPointer(generateObjCImpForArrayConstructor(irConstructor, methodBridge)) + val imp = generateObjCImpForArrayConstructor(irConstructor, methodBridge) - selectorsToDefine[selectorName] = methodBridge - - return ObjCToKotlinMethodAdapter(selectorName, objCEncoding, objCToKotlin) + return objCToKotlinMethodAdapter(selectorName, methodBridge, imp) } private fun ObjCExportCodeGenerator.vtableIndex(irFunction: IrSimpleFunction): Int? { @@ -1424,16 +1417,23 @@ private inline fun ObjCExportCodeGenerator.generateObjCToKotlinSyntheticGetter( MethodBridgeReceiver.Static, valueParameters = emptyList() ) - val encoding = getEncoding(methodBridge) val imp = generateFunction(codegen, objCFunctionType(context, methodBridge), "objc2kotlin") { block() } LLVMSetLinkage(imp, LLVMLinkage.LLVMPrivateLinkage) + return objCToKotlinMethodAdapter(selector, methodBridge, imp) +} + +private fun ObjCExportCodeGenerator.objCToKotlinMethodAdapter( + selector: String, + methodBridge: MethodBridge, + imp: LLVMValueRef +): ObjCExportCodeGenerator.ObjCToKotlinMethodAdapter { selectorsToDefine[selector] = methodBridge - return ObjCToKotlinMethodAdapter(selector, encoding, constPointer(imp)) + return ObjCToKotlinMethodAdapter(selector, getEncoding(methodBridge), constPointer(imp)) } private fun ObjCExportCodeGenerator.createUnitInstanceAdapter() =