[K/N] Move Native-specific mangle constants to more suitable places

They shouldn't be mixed with target-independent constants.
This commit is contained in:
Sergej Jaskiewicz
2023-09-05 16:55:34 +02:00
committed by teamcity
parent 08a9e7eae9
commit 9eba17d631
4 changed files with 18 additions and 20 deletions
@@ -43,13 +43,5 @@ enum class MangleConstant(val prefix: Char, val separator: Char, val suffix: Cha
const val LOCAL_DECLARATION_INDEX_PREFIX = '$'
const val JAVA_FIELD_SUFFIX = "#jf"
const val FUN_PREFIX = "kfun"
const val CLASS_PREFIX = "kclass"
const val FIELD_PREFIX = "kfield"
const val OBJC_MARK = "objc:"
const val OBJC_CONSTRUCTOR_MARK = "#Constructor"
const val OBJC_PROPERTY_ACCESSOR_MARK = "#Accessor"
}
}
@@ -20,6 +20,10 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.NativeStandardInteropNames
import org.jetbrains.kotlin.native.interop.ObjCMethodInfo
private const val OBJC_MARK = "objc:"
private const val OBJC_CONSTRUCTOR_MARK = "#Constructor"
private const val OBJC_PROPERTY_ACCESSOR_MARK = "#Accessor"
abstract class ObjCFunctionNameMangleComputer<ValueParameter : Any> : PlatformSpecificFunctionNameMangleComputer<ValueParameter> {
abstract fun getObjCMethodInfo(): ObjCMethodInfo?
@@ -45,13 +49,13 @@ abstract class ObjCFunctionNameMangleComputer<ValueParameter : Any> : PlatformSp
append(it)
append(MangleConstant.FQN_SEPARATOR)
}
append(MangleConstant.OBJC_MARK)
append(OBJC_MARK)
append(objcMethodInfo.selector)
if (isObjCConstructor()) {
append(MangleConstant.OBJC_CONSTRUCTOR_MARK)
append(OBJC_CONSTRUCTOR_MARK)
}
if (isPropertyAccessor()) {
append(MangleConstant.OBJC_PROPERTY_ACCESSOR_MARK)
append(OBJC_PROPERTY_ACCESSOR_MARK)
}
}
}
@@ -30,6 +30,11 @@ import org.jetbrains.kotlin.name.Name
// TODO: do not serialize descriptors of non-exported declarations.
object KonanBinaryInterface {
internal const val MANGLE_FUN_PREFIX = "kfun"
internal const val MANGLE_CLASS_PREFIX = "kclass"
internal const val MANGLE_FIELD_PREFIX = "kfield"
private val mangler = object : AbstractKonanIrMangler(withReturnType = true, allowOutOfScopeTypeParameters = true) {}
private val exportChecker = mangler.getExportChecker(compatibleMode = true)
@@ -43,7 +48,7 @@ object KonanBinaryInterface {
return funSymbolNameImpl(null)
}
val IrField.symbolName: String get() = withPrefix(MangleConstant.FIELD_PREFIX, fieldSymbolNameImpl())
val IrField.symbolName: String get() = withPrefix(MANGLE_FIELD_PREFIX, fieldSymbolNameImpl())
val IrClass.typeInfoSymbolName: String get() = typeInfoSymbolNameImpl(null)
@@ -70,7 +75,7 @@ object KonanBinaryInterface {
}
val mangle = mangler.run { mangleString(compatibleMode = true) }
return withPrefix(MangleConstant.FUN_PREFIX, containerName?.plus(".$mangle") ?: mangle)
return withPrefix(MANGLE_FUN_PREFIX, containerName?.plus(".$mangle") ?: mangle)
}
private fun IrField.fieldSymbolNameImpl(): String {
@@ -82,7 +87,7 @@ object KonanBinaryInterface {
private fun IrClass.typeInfoSymbolNameImpl(containerName: String?): String {
val fqName = fqNameForIrSerialization.toString()
return withPrefix(MangleConstant.CLASS_PREFIX, containerName?.plus(".$fqName") ?: fqName)
return withPrefix(MANGLE_CLASS_PREFIX, containerName?.plus(".$fqName") ?: fqName)
}
}
@@ -7,19 +7,16 @@ package org.jetbrains.kotlin.backend.konan.llvm
import kotlinx.cinterop.toCValues
import llvm.*
import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleConstant
import org.jetbrains.kotlin.backend.konan.*
import org.jetbrains.kotlin.backend.konan.descriptors.ClassLayoutBuilder
import org.jetbrains.kotlin.backend.konan.descriptors.isTypedIntrinsic
import org.jetbrains.kotlin.backend.konan.descriptors.requiredAlignment
import org.jetbrains.kotlin.backend.konan.ir.*
import org.jetbrains.kotlin.backend.konan.lower.isStaticInitializer
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.objcinterop.*
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.objcinterop.*
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.library.KotlinLibrary
@@ -210,7 +207,7 @@ private class DeclarationsGeneratorVisitor(override val generationState: NativeG
declaration.computeTypeInfoSymbolName()
} else {
if (!context.config.producePerFileCache)
"${MangleConstant.CLASS_PREFIX}:$internalName"
"${KonanBinaryInterface.MANGLE_CLASS_PREFIX}:$internalName"
else {
val containerName = (generationState.cacheDeserializationStrategy as CacheDeserializationStrategy.SingleFile).filePath
declaration.computePrivateTypeInfoSymbolName(containerName)
@@ -389,7 +386,7 @@ private class DeclarationsGeneratorVisitor(override val generationState: NativeG
}
} else {
if (!context.config.producePerFileCache)
"${MangleConstant.FUN_PREFIX}:${qualifyInternalName(declaration)}"
"${KonanBinaryInterface.MANGLE_FUN_PREFIX}:${qualifyInternalName(declaration)}"
else {
val containerName = declaration.parentClassOrNull?.fqNameForIrSerialization?.asString()
?: (generationState.cacheDeserializationStrategy as CacheDeserializationStrategy.SingleFile).filePath