Extract function in ObjCExportCodeGenerator
This commit is contained in:
committed by
Stanislav Erokhin
parent
d218b88106
commit
740d50ca09
+15
-15
@@ -1123,11 +1123,9 @@ private fun ObjCExportCodeGenerator.createMethodVirtualAdapter(
|
|||||||
val selector = namer.getSelector(baseMethod.descriptor)
|
val selector = namer.getSelector(baseMethod.descriptor)
|
||||||
|
|
||||||
val methodBridge = mapper.bridgeMethod(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, methodBridge, imp)
|
||||||
|
|
||||||
return ObjCToKotlinMethodAdapter(selector, getEncoding(methodBridge), objCToKotlin)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ObjCExportCodeGenerator.createMethodAdapter(
|
private fun ObjCExportCodeGenerator.createMethodAdapter(
|
||||||
@@ -1148,12 +1146,10 @@ private fun ObjCExportCodeGenerator.createMethodAdapter(
|
|||||||
|
|
||||||
val selectorName = namer.getSelector(request.base.descriptor)
|
val selectorName = namer.getSelector(request.base.descriptor)
|
||||||
val methodBridge = mapper.bridgeMethod(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(
|
private fun ObjCExportCodeGenerator.createConstructorAdapter(
|
||||||
@@ -1165,12 +1161,9 @@ private fun ObjCExportCodeGenerator.createArrayConstructorAdapter(
|
|||||||
): ObjCExportCodeGenerator.ObjCToKotlinMethodAdapter {
|
): ObjCExportCodeGenerator.ObjCToKotlinMethodAdapter {
|
||||||
val selectorName = namer.getSelector(irConstructor.descriptor)
|
val selectorName = namer.getSelector(irConstructor.descriptor)
|
||||||
val methodBridge = mapper.bridgeMethod(irConstructor.descriptor)
|
val methodBridge = mapper.bridgeMethod(irConstructor.descriptor)
|
||||||
val objCEncoding = getEncoding(methodBridge)
|
val imp = generateObjCImpForArrayConstructor(irConstructor, methodBridge)
|
||||||
val objCToKotlin = constPointer(generateObjCImpForArrayConstructor(irConstructor, methodBridge))
|
|
||||||
|
|
||||||
selectorsToDefine[selectorName] = methodBridge
|
return objCToKotlinMethodAdapter(selectorName, methodBridge, imp)
|
||||||
|
|
||||||
return ObjCToKotlinMethodAdapter(selectorName, objCEncoding, objCToKotlin)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ObjCExportCodeGenerator.vtableIndex(irFunction: IrSimpleFunction): Int? {
|
private fun ObjCExportCodeGenerator.vtableIndex(irFunction: IrSimpleFunction): Int? {
|
||||||
@@ -1424,16 +1417,23 @@ private inline fun ObjCExportCodeGenerator.generateObjCToKotlinSyntheticGetter(
|
|||||||
MethodBridgeReceiver.Static, valueParameters = emptyList()
|
MethodBridgeReceiver.Static, valueParameters = emptyList()
|
||||||
)
|
)
|
||||||
|
|
||||||
val encoding = getEncoding(methodBridge)
|
|
||||||
val imp = generateFunction(codegen, objCFunctionType(context, methodBridge), "objc2kotlin") {
|
val imp = generateFunction(codegen, objCFunctionType(context, methodBridge), "objc2kotlin") {
|
||||||
block()
|
block()
|
||||||
}
|
}
|
||||||
|
|
||||||
LLVMSetLinkage(imp, LLVMLinkage.LLVMPrivateLinkage)
|
LLVMSetLinkage(imp, LLVMLinkage.LLVMPrivateLinkage)
|
||||||
|
|
||||||
|
return objCToKotlinMethodAdapter(selector, methodBridge, imp)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun ObjCExportCodeGenerator.objCToKotlinMethodAdapter(
|
||||||
|
selector: String,
|
||||||
|
methodBridge: MethodBridge,
|
||||||
|
imp: LLVMValueRef
|
||||||
|
): ObjCExportCodeGenerator.ObjCToKotlinMethodAdapter {
|
||||||
selectorsToDefine[selector] = methodBridge
|
selectorsToDefine[selector] = methodBridge
|
||||||
|
|
||||||
return ObjCToKotlinMethodAdapter(selector, encoding, constPointer(imp))
|
return ObjCToKotlinMethodAdapter(selector, getEncoding(methodBridge), constPointer(imp))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ObjCExportCodeGenerator.createUnitInstanceAdapter() =
|
private fun ObjCExportCodeGenerator.createUnitInstanceAdapter() =
|
||||||
|
|||||||
Reference in New Issue
Block a user