[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:
committed by
teamcity
parent
08a9e7eae9
commit
9eba17d631
-8
@@ -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"
|
||||
}
|
||||
}
|
||||
+7
-3
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
-3
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-6
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user