[IR][Native] Drop KonanIrFileSerializer.expectDescriptorToSymbol parameter
^KT-61136
This commit is contained in:
committed by
Space Team
parent
f3c58bcfb3
commit
b37bb0be16
-5
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.backend.konan.serialization.KonanIrModuleSerializer
|
|||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.backend.ConstValueProviderImpl
|
import org.jetbrains.kotlin.fir.backend.ConstValueProviderImpl
|
||||||
import org.jetbrains.kotlin.fir.backend.extractFirDeclarations
|
import org.jetbrains.kotlin.fir.backend.extractFirDeclarations
|
||||||
@@ -23,7 +22,6 @@ import org.jetbrains.kotlin.fir.pipeline.FirResult
|
|||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.serialization.*
|
import org.jetbrains.kotlin.fir.serialization.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
|
||||||
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
||||||
import org.jetbrains.kotlin.konan.library.KonanLibrary
|
import org.jetbrains.kotlin.konan.library.KonanLibrary
|
||||||
import org.jetbrains.kotlin.library.SerializedIrFile
|
import org.jetbrains.kotlin.library.SerializedIrFile
|
||||||
@@ -72,7 +70,6 @@ internal fun PhaseContext.firSerializerBase(
|
|||||||
fir2IrInput?.irModuleFragment,
|
fir2IrInput?.irModuleFragment,
|
||||||
moduleName = fir2IrInput?.irModuleFragment?.descriptor?.name?.asString()
|
moduleName = fir2IrInput?.irModuleFragment?.descriptor?.name?.asString()
|
||||||
?: firResult.outputs.last().session.moduleData.name.asString(),
|
?: firResult.outputs.last().session.moduleData.name.asString(),
|
||||||
expectDescriptorToSymbol = mutableMapOf(), // TODO: expect -> actual mapping
|
|
||||||
firFilesAndSessionsBySourceFile,
|
firFilesAndSessionsBySourceFile,
|
||||||
) { firFile, session, scopeSession ->
|
) { firFile, session, scopeSession ->
|
||||||
serializeSingleFirFile(
|
serializeSingleFirFile(
|
||||||
@@ -111,7 +108,6 @@ internal fun PhaseContext.serializeNativeModule(
|
|||||||
dependencies: List<KonanLibrary>?,
|
dependencies: List<KonanLibrary>?,
|
||||||
moduleFragment: IrModuleFragment?,
|
moduleFragment: IrModuleFragment?,
|
||||||
moduleName: String,
|
moduleName: String,
|
||||||
expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>,
|
|
||||||
firFilesAndSessionsBySourceFile: Map<KtSourceFile, Triple<FirFile, FirSession, ScopeSession>>,
|
firFilesAndSessionsBySourceFile: Map<KtSourceFile, Triple<FirFile, FirSession, ScopeSession>>,
|
||||||
serializeSingleFile: (FirFile, FirSession, ScopeSession) -> ProtoBuf.PackageFragment
|
serializeSingleFile: (FirFile, FirSession, ScopeSession) -> ProtoBuf.PackageFragment
|
||||||
): SerializerOutput {
|
): SerializerOutput {
|
||||||
@@ -126,7 +122,6 @@ internal fun PhaseContext.serializeNativeModule(
|
|||||||
KonanIrModuleSerializer(
|
KonanIrModuleSerializer(
|
||||||
messageLogger,
|
messageLogger,
|
||||||
moduleFragment.irBuiltins,
|
moduleFragment.irBuiltins,
|
||||||
expectDescriptorToSymbol,
|
|
||||||
CompatibilityMode.CURRENT,
|
CompatibilityMode.CURRENT,
|
||||||
normalizeAbsolutePaths = absolutePathNormalization,
|
normalizeAbsolutePaths = absolutePathNormalization,
|
||||||
sourceBaseDirs = sourceBaseDirs,
|
sourceBaseDirs = sourceBaseDirs,
|
||||||
|
|||||||
+1
-10
@@ -18,9 +18,7 @@ import org.jetbrains.kotlin.backend.konan.ir.SymbolOverDescriptorsLookupUtils
|
|||||||
import org.jetbrains.kotlin.backend.konan.ir.interop.IrProviderForCEnumAndCStructStubs
|
import org.jetbrains.kotlin.backend.konan.ir.interop.IrProviderForCEnumAndCStructStubs
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.konanLibrary
|
import org.jetbrains.kotlin.backend.konan.ir.konanLibrary
|
||||||
import org.jetbrains.kotlin.backend.konan.serialization.*
|
import org.jetbrains.kotlin.backend.konan.serialization.*
|
||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||||
@@ -55,7 +53,6 @@ internal fun PsiToIrContext.psiToIr(
|
|||||||
val symbolTable = symbolTable!!
|
val symbolTable = symbolTable!!
|
||||||
val (moduleDescriptor, environment, isProducingLibrary) = input
|
val (moduleDescriptor, environment, isProducingLibrary) = input
|
||||||
// Translate AST to high level IR.
|
// Translate AST to high level IR.
|
||||||
val expectActualLinker = config.configuration[CommonConfigurationKeys.EXPECT_ACTUAL_LINKER] ?: false
|
|
||||||
val messageLogger = config.configuration.irMessageLogger
|
val messageLogger = config.configuration.irMessageLogger
|
||||||
|
|
||||||
val partialLinkageConfig = config.configuration.partialLinkageConfig
|
val partialLinkageConfig = config.configuration.partialLinkageConfig
|
||||||
@@ -214,17 +211,11 @@ internal fun PsiToIrContext.psiToIr(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val expectDescriptorToSymbol = mutableMapOf<DeclarationDescriptor, IrSymbol>()
|
|
||||||
val mainModule = translator.generateModuleFragment(
|
val mainModule = translator.generateModuleFragment(
|
||||||
generatorContext,
|
generatorContext,
|
||||||
environment.getSourceFiles(),
|
environment.getSourceFiles(),
|
||||||
irProviders = listOf(irDeserializer),
|
irProviders = listOf(irDeserializer),
|
||||||
linkerExtensions = pluginExtensions,
|
linkerExtensions = pluginExtensions,
|
||||||
// TODO: This is a hack to allow platform libs to build in reasonable time.
|
|
||||||
// referenceExpectsForUsedActuals() appears to be quadratic in time because of
|
|
||||||
// how ExpectedActualResolver is implemented.
|
|
||||||
// Need to fix ExpectActualResolver to either cache expects or somehow reduce the member scope searches.
|
|
||||||
expectDescriptorToSymbol = if (expectActualLinker) expectDescriptorToSymbol else null
|
|
||||||
).toKonanModule()
|
).toKonanModule()
|
||||||
|
|
||||||
irDeserializer.postProcess(inOrAfterLinkageStep = true)
|
irDeserializer.postProcess(inOrAfterLinkageStep = true)
|
||||||
@@ -263,7 +254,7 @@ internal fun PsiToIrContext.psiToIr(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return if (isProducingLibrary) {
|
return if (isProducingLibrary) {
|
||||||
PsiToIrOutput.ForKlib(mainModule, symbols, expectDescriptorToSymbol)
|
PsiToIrOutput.ForKlib(mainModule, symbols)
|
||||||
} else if (libraryToCache == null) {
|
} else if (libraryToCache == null) {
|
||||||
PsiToIrOutput.ForBackend(modules, mainModule, symbols, irDeserializer as KonanIrLinker)
|
PsiToIrOutput.ForBackend(modules, mainModule, symbols, irDeserializer as KonanIrLinker)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+1
-4
@@ -18,12 +18,10 @@ import org.jetbrains.kotlin.backend.konan.serialization.KonanIrLinker
|
|||||||
import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerDesc
|
import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerDesc
|
||||||
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
|
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
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
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.CleanableBindingContext
|
import org.jetbrains.kotlin.resolve.CleanableBindingContext
|
||||||
@@ -53,8 +51,7 @@ internal sealed class PsiToIrOutput(
|
|||||||
class ForKlib(
|
class ForKlib(
|
||||||
irModule: IrModuleFragment,
|
irModule: IrModuleFragment,
|
||||||
symbols: KonanSymbols,
|
symbols: KonanSymbols,
|
||||||
val expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>,
|
) : PsiToIrOutput(irModule, symbols)
|
||||||
): PsiToIrOutput(irModule, symbols)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Consider component-based approach
|
// TODO: Consider component-based approach
|
||||||
|
|||||||
+1
-1
@@ -43,7 +43,7 @@ internal val SerializerPhase = createSimpleNamedCompilerPhase<PhaseContext, Seri
|
|||||||
val serializedIr = input.psiToIrOutput?.let {
|
val serializedIr = input.psiToIrOutput?.let {
|
||||||
val ir = it.irModule
|
val ir = it.irModule
|
||||||
KonanIrModuleSerializer(
|
KonanIrModuleSerializer(
|
||||||
messageLogger, ir.irBuiltins, it.expectDescriptorToSymbol,
|
messageLogger, ir.irBuiltins,
|
||||||
compatibilityMode = CompatibilityMode.CURRENT,
|
compatibilityMode = CompatibilityMode.CURRENT,
|
||||||
normalizeAbsolutePaths = normalizeAbsolutePaths,
|
normalizeAbsolutePaths = normalizeAbsolutePaths,
|
||||||
sourceBaseDirs = relativePathBase,
|
sourceBaseDirs = relativePathBase,
|
||||||
|
|||||||
+16
-12
@@ -5,25 +5,29 @@ import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
|
|||||||
import org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer
|
import org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer
|
||||||
import org.jetbrains.kotlin.backend.konan.RuntimeNames
|
import org.jetbrains.kotlin.backend.konan.RuntimeNames
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrAnnotationContainer
|
import org.jetbrains.kotlin.ir.declarations.IrAnnotationContainer
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
|
||||||
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
||||||
import org.jetbrains.kotlin.ir.util.hasAnnotation
|
import org.jetbrains.kotlin.ir.util.hasAnnotation
|
||||||
|
|
||||||
class KonanIrFileSerializer(
|
class KonanIrFileSerializer(
|
||||||
messageLogger: IrMessageLogger,
|
messageLogger: IrMessageLogger,
|
||||||
declarationTable: DeclarationTable,
|
declarationTable: DeclarationTable,
|
||||||
expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>,
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
bodiesOnlyForInlines: Boolean = false,
|
||||||
bodiesOnlyForInlines: Boolean = false,
|
compatibilityMode: CompatibilityMode,
|
||||||
compatibilityMode: CompatibilityMode,
|
normalizeAbsolutePaths: Boolean,
|
||||||
normalizeAbsolutePaths: Boolean,
|
sourceBaseDirs: Collection<String>
|
||||||
sourceBaseDirs: Collection<String>
|
) : IrFileSerializer(
|
||||||
): IrFileSerializer(messageLogger, declarationTable, expectDescriptorToSymbol, compatibilityMode, languageVersionSettings,
|
messageLogger = messageLogger,
|
||||||
bodiesOnlyForInlines, normalizeAbsolutePaths = normalizeAbsolutePaths, sourceBaseDirs = sourceBaseDirs) {
|
declarationTable = declarationTable,
|
||||||
|
compatibilityMode = compatibilityMode,
|
||||||
|
languageVersionSettings = languageVersionSettings,
|
||||||
|
bodiesOnlyForInlines = bodiesOnlyForInlines,
|
||||||
|
normalizeAbsolutePaths = normalizeAbsolutePaths,
|
||||||
|
sourceBaseDirs = sourceBaseDirs
|
||||||
|
) {
|
||||||
|
|
||||||
override fun backendSpecificExplicitRoot(node: IrAnnotationContainer): Boolean {
|
override fun backendSpecificExplicitRoot(node: IrAnnotationContainer): Boolean {
|
||||||
val fqn = when (node) {
|
val fqn = when (node) {
|
||||||
|
|||||||
+7
-10
@@ -4,20 +4,17 @@ import org.jetbrains.kotlin.backend.common.serialization.CompatibilityMode
|
|||||||
import org.jetbrains.kotlin.backend.common.serialization.IrModuleSerializer
|
import org.jetbrains.kotlin.backend.common.serialization.IrModuleSerializer
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.interop.IrProviderForCEnumAndCStructStubs
|
import org.jetbrains.kotlin.backend.konan.ir.interop.IrProviderForCEnumAndCStructStubs
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
|
||||||
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
||||||
|
|
||||||
class KonanIrModuleSerializer(
|
class KonanIrModuleSerializer(
|
||||||
messageLogger: IrMessageLogger,
|
messageLogger: IrMessageLogger,
|
||||||
irBuiltIns: IrBuiltIns,
|
irBuiltIns: IrBuiltIns,
|
||||||
private val expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>,
|
compatibilityMode: CompatibilityMode,
|
||||||
compatibilityMode: CompatibilityMode,
|
normalizeAbsolutePaths: Boolean,
|
||||||
normalizeAbsolutePaths: Boolean,
|
sourceBaseDirs: Collection<String>,
|
||||||
sourceBaseDirs: Collection<String>,
|
private val languageVersionSettings: LanguageVersionSettings,
|
||||||
private val languageVersionSettings: LanguageVersionSettings,
|
|
||||||
) : IrModuleSerializer<KonanIrFileSerializer>(messageLogger, compatibilityMode, normalizeAbsolutePaths, sourceBaseDirs) {
|
) : IrModuleSerializer<KonanIrFileSerializer>(messageLogger, compatibilityMode, normalizeAbsolutePaths, sourceBaseDirs) {
|
||||||
|
|
||||||
private val globalDeclarationTable = KonanGlobalDeclarationTable(irBuiltIns)
|
private val globalDeclarationTable = KonanGlobalDeclarationTable(irBuiltIns)
|
||||||
@@ -32,7 +29,7 @@ class KonanIrModuleSerializer(
|
|||||||
file.fileEntry.name != IrProviderForCEnumAndCStructStubs.cTypeDefinitionsFileName
|
file.fileEntry.name != IrProviderForCEnumAndCStructStubs.cTypeDefinitionsFileName
|
||||||
|
|
||||||
override fun createSerializerForFile(file: IrFile): KonanIrFileSerializer =
|
override fun createSerializerForFile(file: IrFile): KonanIrFileSerializer =
|
||||||
KonanIrFileSerializer(messageLogger, KonanDeclarationTable(globalDeclarationTable), expectDescriptorToSymbol,
|
KonanIrFileSerializer(messageLogger, KonanDeclarationTable(globalDeclarationTable),
|
||||||
compatibilityMode = compatibilityMode,
|
compatibilityMode = compatibilityMode,
|
||||||
normalizeAbsolutePaths = normalizeAbsolutePaths,
|
normalizeAbsolutePaths = normalizeAbsolutePaths,
|
||||||
sourceBaseDirs = sourceBaseDirs,
|
sourceBaseDirs = sourceBaseDirs,
|
||||||
|
|||||||
Reference in New Issue
Block a user