diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/StaticData.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/StaticData.kt index 5452676e021..7c6f186f282 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/StaticData.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/StaticData.kt @@ -122,6 +122,9 @@ internal class StaticData(override val context: Context): ContextUtils { private val stringLiterals = mutableMapOf() + fun kotlinStringLiteral(value: String) = + stringLiterals.getOrPut(value) { createKotlinStringLiteral(value) } + fun kotlinStringLiteral(value: IrConst) = - stringLiterals.getOrPut(value.value) { createKotlinStringLiteral(value) } + stringLiterals.getOrPut(value.value) { createKotlinStringLiteral(value) } } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/StaticObjects.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/StaticObjects.kt index bf1b6b524fc..2829fb75bb3 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/StaticObjects.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/StaticObjects.kt @@ -41,11 +41,13 @@ private fun StaticData.staticContainerHeader(): Struct { return Struct(header, padding) } -internal fun StaticData.createKotlinStringLiteral(value: IrConst): ConstPointer { - val name = "kstr:" + value.value.globalHashBase64 - val elements = value.value.toByteArray(Charsets.UTF_8).map { Int8(it) } +internal fun StaticData.createKotlinStringLiteral(value: IrConst) = createKotlinStringLiteral(value.value) - val objRef = createKotlinArray(value.type, elements) +internal fun StaticData.createKotlinStringLiteral(value: String): ConstPointer { + val name = "kstr:" + value.globalHashBase64 + val elements = value.toByteArray(Charsets.UTF_8).map(::Int8) + + val objRef = createKotlinArray(KonanPlatform.builtIns.stringType, elements) val res = createAlias(name, objRef) LLVMSetLinkage(res.llvm, LLVMLinkage.LLVMWeakAnyLinkage)