From b37bb0be163e379d7af64df6155a2c6277891bef Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Thu, 10 Aug 2023 16:25:40 +0200 Subject: [PATCH] [IR][Native] Drop KonanIrFileSerializer.expectDescriptorToSymbol parameter ^KT-61136 --- .../backend/konan/FirNativeSerializer.kt | 5 ---- .../jetbrains/kotlin/backend/konan/PsiToIr.kt | 11 +------- .../backend/konan/driver/phases/PsiToIr.kt | 5 +--- .../backend/konan/driver/phases/Serializer.kt | 2 +- .../serialization/KonanIrFileSerializer.kt | 28 +++++++++++-------- .../serialization/KonanIrModuleSerializer.kt | 17 +++++------ 6 files changed, 26 insertions(+), 42 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/FirNativeSerializer.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/FirNativeSerializer.kt index 4d6c86f6099..bb1ce700430 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/FirNativeSerializer.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/FirNativeSerializer.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.backend.konan.serialization.KonanIrModuleSerializer import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.languageVersionSettings -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.backend.ConstValueProviderImpl 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.serialization.* 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.konan.library.KonanLibrary import org.jetbrains.kotlin.library.SerializedIrFile @@ -72,7 +70,6 @@ internal fun PhaseContext.firSerializerBase( fir2IrInput?.irModuleFragment, moduleName = fir2IrInput?.irModuleFragment?.descriptor?.name?.asString() ?: firResult.outputs.last().session.moduleData.name.asString(), - expectDescriptorToSymbol = mutableMapOf(), // TODO: expect -> actual mapping firFilesAndSessionsBySourceFile, ) { firFile, session, scopeSession -> serializeSingleFirFile( @@ -111,7 +108,6 @@ internal fun PhaseContext.serializeNativeModule( dependencies: List?, moduleFragment: IrModuleFragment?, moduleName: String, - expectDescriptorToSymbol: MutableMap, firFilesAndSessionsBySourceFile: Map>, serializeSingleFile: (FirFile, FirSession, ScopeSession) -> ProtoBuf.PackageFragment ): SerializerOutput { @@ -126,7 +122,6 @@ internal fun PhaseContext.serializeNativeModule( KonanIrModuleSerializer( messageLogger, moduleFragment.irBuiltins, - expectDescriptorToSymbol, CompatibilityMode.CURRENT, normalizeAbsolutePaths = absolutePathNormalization, sourceBaseDirs = sourceBaseDirs, diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt index 8a1677efd1e..b3f51b788ae 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/PsiToIr.kt @@ -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.konanLibrary import org.jetbrains.kotlin.backend.konan.serialization.* -import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.languageVersionSettings -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.ir.IrBuiltIns @@ -55,7 +53,6 @@ internal fun PsiToIrContext.psiToIr( val symbolTable = symbolTable!! val (moduleDescriptor, environment, isProducingLibrary) = input // Translate AST to high level IR. - val expectActualLinker = config.configuration[CommonConfigurationKeys.EXPECT_ACTUAL_LINKER] ?: false val messageLogger = config.configuration.irMessageLogger val partialLinkageConfig = config.configuration.partialLinkageConfig @@ -214,17 +211,11 @@ internal fun PsiToIrContext.psiToIr( } } - val expectDescriptorToSymbol = mutableMapOf() val mainModule = translator.generateModuleFragment( generatorContext, environment.getSourceFiles(), irProviders = listOf(irDeserializer), 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() irDeserializer.postProcess(inOrAfterLinkageStep = true) @@ -263,7 +254,7 @@ internal fun PsiToIrContext.psiToIr( } return if (isProducingLibrary) { - PsiToIrOutput.ForKlib(mainModule, symbols, expectDescriptorToSymbol) + PsiToIrOutput.ForKlib(mainModule, symbols) } else if (libraryToCache == null) { PsiToIrOutput.ForBackend(modules, mainModule, symbols, irDeserializer as KonanIrLinker) } else { diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PsiToIr.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PsiToIr.kt index 59eebe4db2b..b9ab46631c2 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PsiToIr.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PsiToIr.kt @@ -18,12 +18,10 @@ import org.jetbrains.kotlin.backend.konan.serialization.KonanIrLinker import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerDesc import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.IrModuleFragment 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.resolve.BindingContext import org.jetbrains.kotlin.resolve.CleanableBindingContext @@ -53,8 +51,7 @@ internal sealed class PsiToIrOutput( class ForKlib( irModule: IrModuleFragment, symbols: KonanSymbols, - val expectDescriptorToSymbol: MutableMap, - ): PsiToIrOutput(irModule, symbols) + ) : PsiToIrOutput(irModule, symbols) } // TODO: Consider component-based approach diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Serializer.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Serializer.kt index 094cdf5f107..f2ba8bd4837 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Serializer.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Serializer.kt @@ -43,7 +43,7 @@ internal val SerializerPhase = createSimpleNamedCompilerPhase, - languageVersionSettings: LanguageVersionSettings, - bodiesOnlyForInlines: Boolean = false, - compatibilityMode: CompatibilityMode, - normalizeAbsolutePaths: Boolean, - sourceBaseDirs: Collection -): IrFileSerializer(messageLogger, declarationTable, expectDescriptorToSymbol, compatibilityMode, languageVersionSettings, - bodiesOnlyForInlines, normalizeAbsolutePaths = normalizeAbsolutePaths, sourceBaseDirs = sourceBaseDirs) { + messageLogger: IrMessageLogger, + declarationTable: DeclarationTable, + languageVersionSettings: LanguageVersionSettings, + bodiesOnlyForInlines: Boolean = false, + compatibilityMode: CompatibilityMode, + normalizeAbsolutePaths: Boolean, + sourceBaseDirs: Collection +) : IrFileSerializer( + messageLogger = messageLogger, + declarationTable = declarationTable, + compatibilityMode = compatibilityMode, + languageVersionSettings = languageVersionSettings, + bodiesOnlyForInlines = bodiesOnlyForInlines, + normalizeAbsolutePaths = normalizeAbsolutePaths, + sourceBaseDirs = sourceBaseDirs +) { override fun backendSpecificExplicitRoot(node: IrAnnotationContainer): Boolean { val fqn = when (node) { diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrModuleSerializer.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrModuleSerializer.kt index 5a0500def16..253c1a29502 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrModuleSerializer.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrModuleSerializer.kt @@ -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.konan.ir.interop.IrProviderForCEnumAndCStructStubs import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.declarations.IrFile -import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.util.IrMessageLogger class KonanIrModuleSerializer( - messageLogger: IrMessageLogger, - irBuiltIns: IrBuiltIns, - private val expectDescriptorToSymbol: MutableMap, - compatibilityMode: CompatibilityMode, - normalizeAbsolutePaths: Boolean, - sourceBaseDirs: Collection, - private val languageVersionSettings: LanguageVersionSettings, + messageLogger: IrMessageLogger, + irBuiltIns: IrBuiltIns, + compatibilityMode: CompatibilityMode, + normalizeAbsolutePaths: Boolean, + sourceBaseDirs: Collection, + private val languageVersionSettings: LanguageVersionSettings, ) : IrModuleSerializer(messageLogger, compatibilityMode, normalizeAbsolutePaths, sourceBaseDirs) { private val globalDeclarationTable = KonanGlobalDeclarationTable(irBuiltIns) @@ -32,7 +29,7 @@ class KonanIrModuleSerializer( file.fileEntry.name != IrProviderForCEnumAndCStructStubs.cTypeDefinitionsFileName override fun createSerializerForFile(file: IrFile): KonanIrFileSerializer = - KonanIrFileSerializer(messageLogger, KonanDeclarationTable(globalDeclarationTable), expectDescriptorToSymbol, + KonanIrFileSerializer(messageLogger, KonanDeclarationTable(globalDeclarationTable), compatibilityMode = compatibilityMode, normalizeAbsolutePaths = normalizeAbsolutePaths, sourceBaseDirs = sourceBaseDirs,