JVM IR: rename mangler implementation classes
This commit is contained in:
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
|||||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
|
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi2ir.generators.GeneratorExtensions
|
import org.jetbrains.kotlin.psi2ir.generators.GeneratorExtensions
|
||||||
@@ -98,7 +98,7 @@ class FirAnalyzerFacade(
|
|||||||
|
|
||||||
override fun convertToIr(extensions: GeneratorExtensions): Fir2IrResult {
|
override fun convertToIr(extensions: GeneratorExtensions): Fir2IrResult {
|
||||||
if (_scopeSession == null) runResolution()
|
if (_scopeSession == null) runResolution()
|
||||||
val signaturer = JvmIdSignatureDescriptor(JvmManglerDesc())
|
val signaturer = JvmIdSignatureDescriptor(JvmDescriptorMangler(null))
|
||||||
|
|
||||||
return Fir2IrConverter.createModuleFragment(
|
return Fir2IrConverter.createModuleFragment(
|
||||||
session, _scopeSession!!, firFiles!!,
|
session, _scopeSession!!, firFiles!!,
|
||||||
|
|||||||
+3
-3
@@ -20,8 +20,8 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin
|
import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin
|
||||||
import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin
|
import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin
|
||||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||||
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrLinker
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrLinker
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
|
||||||
import org.jetbrains.kotlin.ir.builders.TranslationPluginContext
|
import org.jetbrains.kotlin.ir.builders.TranslationPluginContext
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
@@ -40,7 +40,7 @@ import org.jetbrains.kotlin.resolve.CleanableBindingContext
|
|||||||
|
|
||||||
open class JvmIrCodegenFactory(
|
open class JvmIrCodegenFactory(
|
||||||
private val phaseConfig: PhaseConfig,
|
private val phaseConfig: PhaseConfig,
|
||||||
private val externalMangler: JvmManglerDesc? = null,
|
private val externalMangler: JvmDescriptorMangler? = null,
|
||||||
private val externalSymbolTable: SymbolTable? = null,
|
private val externalSymbolTable: SymbolTable? = null,
|
||||||
private val jvmGeneratorExtensions: JvmGeneratorExtensionsImpl = JvmGeneratorExtensionsImpl()
|
private val jvmGeneratorExtensions: JvmGeneratorExtensionsImpl = JvmGeneratorExtensionsImpl()
|
||||||
) : CodegenFactory {
|
) : CodegenFactory {
|
||||||
@@ -65,7 +65,7 @@ open class JvmIrCodegenFactory(
|
|||||||
val (mangler, symbolTable) =
|
val (mangler, symbolTable) =
|
||||||
if (externalSymbolTable != null) externalMangler!! to externalSymbolTable
|
if (externalSymbolTable != null) externalMangler!! to externalSymbolTable
|
||||||
else {
|
else {
|
||||||
val mangler = JvmManglerDesc(MainFunctionDetector(state.bindingContext, state.languageVersionSettings))
|
val mangler = JvmDescriptorMangler(MainFunctionDetector(state.bindingContext, state.languageVersionSettings))
|
||||||
val symbolTable = SymbolTable(JvmIdSignatureDescriptor(mangler), IrFactoryImpl, JvmNameProvider)
|
val symbolTable = SymbolTable(JvmIdSignatureDescriptor(mangler), IrFactoryImpl, JvmNameProvider)
|
||||||
mangler to symbolTable
|
mangler to symbolTable
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -40,10 +40,10 @@ class JvmIrLinker(
|
|||||||
override val functionalInterfaceFactory: IrAbstractFunctionFactory,
|
override val functionalInterfaceFactory: IrAbstractFunctionFactory,
|
||||||
override val translationPluginContext: TranslationPluginContext?,
|
override val translationPluginContext: TranslationPluginContext?,
|
||||||
private val stubGenerator: DeclarationStubGenerator,
|
private val stubGenerator: DeclarationStubGenerator,
|
||||||
private val manglerDesc: JvmManglerDesc
|
private val manglerDesc: JvmDescriptorMangler
|
||||||
) : KotlinIrLinker(currentModule, messageLogger, typeSystem.irBuiltIns, symbolTable, emptyList()) {
|
) : KotlinIrLinker(currentModule, messageLogger, typeSystem.irBuiltIns, symbolTable, emptyList()) {
|
||||||
|
|
||||||
override val fakeOverrideBuilder = FakeOverrideBuilder(this, symbolTable, JvmManglerIr, typeSystem)
|
override val fakeOverrideBuilder = FakeOverrideBuilder(this, symbolTable, JvmIrMangler, typeSystem)
|
||||||
|
|
||||||
private val javaName = Name.identifier("java")
|
private val javaName = Name.identifier("java")
|
||||||
|
|
||||||
|
|||||||
+12
-26
@@ -26,8 +26,7 @@ import org.jetbrains.kotlin.ir.util.isFromJava
|
|||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
|
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
|
||||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.isJavaField
|
import org.jetbrains.kotlin.load.java.lazy.descriptors.isJavaField
|
||||||
|
|
||||||
abstract class AbstractJvmManglerIr : IrBasedKotlinManglerImpl() {
|
object JvmIrMangler : IrBasedKotlinManglerImpl() {
|
||||||
|
|
||||||
private class JvmIrExportChecker(compatibleMode: Boolean) : IrExportCheckerVisitor(compatibleMode) {
|
private class JvmIrExportChecker(compatibleMode: Boolean) : IrExportCheckerVisitor(compatibleMode) {
|
||||||
override fun IrDeclaration.isPlatformSpecificExported() = false
|
override fun IrDeclaration.isPlatformSpecificExported() = false
|
||||||
}
|
}
|
||||||
@@ -42,20 +41,12 @@ abstract class AbstractJvmManglerIr : IrBasedKotlinManglerImpl() {
|
|||||||
|
|
||||||
override fun getExportChecker(compatibleMode: Boolean): KotlinExportChecker<IrDeclaration> = JvmIrExportChecker(compatibleMode)
|
override fun getExportChecker(compatibleMode: Boolean): KotlinExportChecker<IrDeclaration> = JvmIrExportChecker(compatibleMode)
|
||||||
|
|
||||||
override fun getMangleComputer(mode: MangleMode): KotlinMangleComputer<IrDeclaration> {
|
override fun getMangleComputer(mode: MangleMode): KotlinMangleComputer<IrDeclaration> =
|
||||||
return JvmIrManglerComputer(StringBuilder(256), mode)
|
JvmIrManglerComputer(StringBuilder(256), mode)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object JvmManglerIr : AbstractJvmManglerIr()
|
class JvmDescriptorMangler(private val mainDetector: MainFunctionDetector?) : DescriptorBasedKotlinManglerImpl() {
|
||||||
|
private object ExportChecker : DescriptorExportCheckerVisitor() {
|
||||||
abstract class AbstractJvmDescriptorMangler(private val mainDetector: MainFunctionDetector?) : DescriptorBasedKotlinManglerImpl() {
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private val exportChecker = JvmDescriptorExportChecker()
|
|
||||||
}
|
|
||||||
|
|
||||||
private class JvmDescriptorExportChecker : DescriptorExportCheckerVisitor() {
|
|
||||||
override fun DeclarationDescriptor.isPlatformSpecificExported() = false
|
override fun DeclarationDescriptor.isPlatformSpecificExported() = false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,13 +60,11 @@ abstract class AbstractJvmDescriptorMangler(private val mainDetector: MainFuncti
|
|||||||
|
|
||||||
override fun copy(newMode: MangleMode): DescriptorMangleComputer = JvmDescriptorManglerComputer(builder, mainDetector, newMode)
|
override fun copy(newMode: MangleMode): DescriptorMangleComputer = JvmDescriptorManglerComputer(builder, mainDetector, newMode)
|
||||||
|
|
||||||
private fun isMainFunction(descriptor: FunctionDescriptor): Boolean = mainDetector?.isMain(descriptor) ?: false
|
private fun isMainFunction(descriptor: FunctionDescriptor): Boolean =
|
||||||
|
mainDetector != null && mainDetector.isMain(descriptor)
|
||||||
|
|
||||||
override fun FunctionDescriptor.platformSpecificSuffix(): String? {
|
override fun FunctionDescriptor.platformSpecificSuffix(): String? =
|
||||||
return if (isMainFunction(this)) {
|
if (isMainFunction(this)) source.containingFile.name else null
|
||||||
return source.containingFile.name
|
|
||||||
} else null
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun PropertyDescriptor.platformSpecificSuffix(): String? {
|
override fun PropertyDescriptor.platformSpecificSuffix(): String? {
|
||||||
// Since LV 1.4 there is a feature PreferJavaFieldOverload which allows to have java and kotlin
|
// Since LV 1.4 there is a feature PreferJavaFieldOverload which allows to have java and kotlin
|
||||||
@@ -91,11 +80,8 @@ abstract class AbstractJvmDescriptorMangler(private val mainDetector: MainFuncti
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getExportChecker(compatibleMode: Boolean): KotlinExportChecker<DeclarationDescriptor> = exportChecker
|
override fun getExportChecker(compatibleMode: Boolean): KotlinExportChecker<DeclarationDescriptor> = ExportChecker
|
||||||
|
|
||||||
override fun getMangleComputer(mode: MangleMode): KotlinMangleComputer<DeclarationDescriptor> {
|
override fun getMangleComputer(mode: MangleMode): KotlinMangleComputer<DeclarationDescriptor> =
|
||||||
return JvmDescriptorManglerComputer(StringBuilder(256), mainDetector, mode)
|
JvmDescriptorManglerComputer(StringBuilder(256), mainDetector, mode)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class JvmManglerDesc(mainDetector: MainFunctionDetector? = null) : AbstractJvmDescriptorMangler(mainDetector)
|
|
||||||
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings
|
|||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||||
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc
|
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||||
@@ -143,7 +143,7 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
|||||||
JvmResolveUtil.analyze(ktFilesToAnalyze, environment), psi2ir, ktFilesToAnalyze,
|
JvmResolveUtil.analyze(ktFilesToAnalyze, environment), psi2ir, ktFilesToAnalyze,
|
||||||
JvmGeneratorExtensionsImpl(generateFacades = false),
|
JvmGeneratorExtensionsImpl(generateFacades = false),
|
||||||
createIdSignatureComposer = { bindingContext ->
|
createIdSignatureComposer = { bindingContext ->
|
||||||
JvmIdSignatureDescriptor(JvmManglerDesc(MainFunctionDetector(bindingContext, languageVersionSettings)))
|
JvmIdSignatureDescriptor(JvmDescriptorMangler(MainFunctionDetector(bindingContext, languageVersionSettings)))
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
|
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
|
||||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
@@ -336,13 +336,13 @@ class ReplCompilationState<AnalyzerT : ReplCodeAnalyzerBase>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val manglerAndSymbolTable by lazy {
|
private val manglerAndSymbolTable by lazy {
|
||||||
val mangler = JvmManglerDesc(
|
val mangler = JvmDescriptorMangler(
|
||||||
MainFunctionDetector(analyzerEngine.trace.bindingContext, environment.configuration.languageVersionSettings)
|
MainFunctionDetector(analyzerEngine.trace.bindingContext, environment.configuration.languageVersionSettings)
|
||||||
)
|
)
|
||||||
val symbolTable = SymbolTable(JvmIdSignatureDescriptor(mangler), IrFactoryImpl, JvmNameProvider)
|
val symbolTable = SymbolTable(JvmIdSignatureDescriptor(mangler), IrFactoryImpl, JvmNameProvider)
|
||||||
mangler to symbolTable
|
mangler to symbolTable
|
||||||
}
|
}
|
||||||
|
|
||||||
override val mangler: JvmManglerDesc get() = manglerAndSymbolTable.first
|
override val mangler: JvmDescriptorMangler get() = manglerAndSymbolTable.first
|
||||||
override val symbolTable: SymbolTable get() = manglerAndSymbolTable.second
|
override val symbolTable: SymbolTable get() = manglerAndSymbolTable.second
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.cli.common.repl.BasicReplStageHistory
|
|||||||
import org.jetbrains.kotlin.cli.common.repl.IReplStageState
|
import org.jetbrains.kotlin.cli.common.repl.IReplStageState
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
|
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.resolve.calls.tower.ImplicitsExtensionsResolutionFilter
|
import org.jetbrains.kotlin.resolve.calls.tower.ImplicitsExtensionsResolutionFilter
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock
|
import java.util.concurrent.locks.ReentrantReadWriteLock
|
||||||
@@ -65,7 +65,7 @@ class JvmReplCompilerState<CompilationT : JvmReplCompilerState.Compilation>(
|
|||||||
val environment: KotlinCoreEnvironment
|
val environment: KotlinCoreEnvironment
|
||||||
val analyzerEngine: ReplCodeAnalyzerBase
|
val analyzerEngine: ReplCodeAnalyzerBase
|
||||||
val implicitsResolutionFilter: ImplicitsExtensionsResolutionFilter
|
val implicitsResolutionFilter: ImplicitsExtensionsResolutionFilter
|
||||||
val mangler: JvmManglerDesc
|
val mangler: JvmDescriptorMangler
|
||||||
val symbolTable: SymbolTable
|
val symbolTable: SymbolTable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user