From 24e0ae7d00c77c9296e953570d938d0296d09b0b Mon Sep 17 00:00:00 2001 From: Konstantin Anisimov Date: Fri, 11 Nov 2016 14:13:12 +0300 Subject: [PATCH] rtti: introduces functionName extension function to FunctionDescriptor for filling vtable with hashcode and reusing it in codegeneration --- .../src/org/jetbrains/kotlin/backend/konan/llvm/NameUtils.kt | 3 +++ .../org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/NameUtils.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/NameUtils.kt index 739a660e639..b37285ecd16 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/NameUtils.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/NameUtils.kt @@ -22,6 +22,9 @@ internal val FunctionDescriptor.symbolName: String return "kfun:" + this.fqNameSafe.toString() // FIXME: add signature } +internal val FunctionDescriptor.functionName: String + get() = this.name.asString() // FIXME: add signature + internal val ClassDescriptor.symbolName: String get() = when (this.kind) { CLASS -> "kclass:" diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt index 027f04eb539..56329189470 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt @@ -202,7 +202,7 @@ internal class RTTIGenerator(override val context: Context) : ContextUtils { val vtablePtr = staticData.placeGlobalConstArray("kvtable:$className", pointerType(int8Type), vtable) val methods = getMethodTableEntries(classDesc).map { - val nameSignature = it.name.localHash // FIXME: add signature + val nameSignature = it.functionName.localHash // FIXME: add signature // TODO: compile-time resolution limits binary compatibility val methodEntryPoint = it.implementation.entryPointAddress MethodTableRecord(nameSignature, methodEntryPoint)