From 05235053548430087fd1df73fa473859fabca88b Mon Sep 17 00:00:00 2001 From: Vasily Levchenko Date: Fri, 21 Oct 2016 05:29:28 +0300 Subject: [PATCH] Runtime: export function to import own functionality to target module (perhaps it's frontend task) --- .../org/jetbrains/kotlin/backend/native/llvm/Runtime.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/native/llvm/Runtime.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/native/llvm/Runtime.kt index faf748978ae..38cf961ad48 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/native/llvm/Runtime.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/native/llvm/Runtime.kt @@ -34,6 +34,15 @@ class Runtime(private val bitcodeFile: String) { val fieldTableRecordType = LLVMGetTypeByName(llvmModule, "struct.FieldTableRecord") val methodTableRecordType = LLVMGetTypeByName(llvmModule, "struct.MethodTableRecord") val globalhHashType = LLVMGetTypeByName(llvmModule, "struct.GlobalHash") + val allocInstanceFunction = LLVMGetNamedFunction(llvmModule, "AllocInstance") + + fun importRuntime(module: LLVMOpaqueModule) { + memScoped { + val params = allocNativeArrayOf(LLVMOpaqueType, pointerType(typeInfoType), LLVMInt32Type()) + val functionAllocInstanceType = LLVMFunctionType(pointerType(LLVMInt8Type()),params[0], 2, 0) + LLVMAddFunction(module, "AllocInstance", functionAllocInstanceType) + } + } val target = LLVMGetTarget(llvmModule)!!.asCString().toString()