From c2122dbae14eed172ac1a4115a14ba4f82e0b7f9 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 4 Dec 2024 11:47:46 +0100 Subject: [PATCH] IR: remove IrDeserializer.IrLinkerExtension There are no implementations of this extension in known plugins, and the commits which introduced it (5eae262264, a095909d5c) do not have any links to issues. It looks like it was only used from the removed android-extensions plugin: https://github.com/JetBrains/kotlin/commit/2fdb194c17fa7572554c9340657ecdc3fcae5789#diff-1da466955b70d7f36f0e94aec4d8b8226b63de6dbb41fcf222c9e5d08fbc8006L54 --- .../jetbrains/kotlin/cli/js/klib/irForKlib.kt | 7 +--- .../extensions/IrGenerationExtension.kt | 3 +- .../ir/backend/js/ic/JsIrLinkerLoader.kt | 3 +- .../kotlin/backend/jvm/JvmIrCodegenFactory.kt | 25 +----------- .../kotlin/psi2ir/Psi2IrTranslator.kt | 3 +- .../ir/builders/TranslationPluginContext.kt | 16 -------- .../kotlin/ir/linkage/IrDeserializer.kt | 9 +---- .../common/serialization/KotlinIrLinker.kt | 40 +++++-------------- .../jetbrains/kotlin/ir/backend/js/klib.kt | 35 +++++----------- .../js/lower/serialization/ir/JsIrLinker.kt | 13 ++---- .../backend/jvm/serialization/JvmIrLinker.kt | 2 - .../kotlin/benchmarks/GenerateIrRuntime.kt | 19 ++++----- .../jetbrains/kotlin/backend/konan/PsiToIr.kt | 23 +---------- .../konan/serialization/KonanIrLinker.kt | 2 - .../kotlin/cli/klib/KlibToolIrLinker.kt | 3 -- .../test/ClassicFrontend2NativeIrConverter.kt | 14 +++---- 16 files changed, 43 insertions(+), 174 deletions(-) delete mode 100644 compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/TranslationPluginContext.kt diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/irForKlib.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/irForKlib.kt index 78d59538b8cdc..1102269d87cd3 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/irForKlib.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/irForKlib.kt @@ -66,15 +66,11 @@ fun generateIrForKlibSerialization( messageCollector::checkNoUnboundSymbols ) val psi2IrContext = psi2Ir.createGeneratorContext(analysisResult.moduleDescriptor, analysisResult.bindingContext, symbolTable) - val irBuiltIns = psi2IrContext.irBuiltIns - val feContext = psi2IrContext.run { - JsIrLinker.JsFePluginContext(moduleDescriptor, symbolTable, typeTranslator, irBuiltIns) - } val stubGenerator = DeclarationStubGeneratorImpl( psi2IrContext.moduleDescriptor, symbolTable, - irBuiltIns, + psi2IrContext.irBuiltIns, DescriptorByIdSignatureFinderImpl(psi2IrContext.moduleDescriptor, JsManglerDesc), ) val irLinker = JsIrLinker( @@ -87,7 +83,6 @@ fun generateIrForKlibSerialization( builtIns = psi2IrContext.irBuiltIns, messageCollector = messageCollector ), - feContext, ICData(icData.map { it.irData!! }, containsErrorCode = false), stubGenerator = stubGenerator ) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension.kt index d92caf9aac1c7..b627c3cce7c05 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension.kt @@ -8,9 +8,8 @@ package org.jetbrains.kotlin.backend.common.extensions import org.jetbrains.kotlin.backend.common.LoweringContext import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor import org.jetbrains.kotlin.ir.declarations.IrModuleFragment -import org.jetbrains.kotlin.ir.linkage.IrDeserializer -interface IrGenerationExtension : IrDeserializer.IrLinkerExtension { +interface IrGenerationExtension { companion object : ProjectExtensionDescriptor( "org.jetbrains.kotlin.irGenerationExtension", IrGenerationExtension::class.java diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/JsIrLinkerLoader.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/JsIrLinkerLoader.kt index 232b844ae60bf..ebd51e3fbd8ae 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/JsIrLinkerLoader.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/JsIrLinkerLoader.kt @@ -145,7 +145,6 @@ internal class JsIrLinkerLoader( builtIns = irBuiltIns, messageCollector = messageCollector ), - translationPluginContext = null, friendModules = mapOf(mainLibrary.uniqueName to mainModuleFriends.map { it.uniqueName }) ) return LinkerContext(symbolTable, typeTranslator, irBuiltIns, linker) @@ -213,7 +212,7 @@ internal class JsIrLinkerLoader( val (_, stdlibFragment) = findStdlib(mainFragment, irModules) linkerContext.loadFunctionInterfacesIntoStdlib(stdlibFragment) - linkerContext.linker.init(null, emptyList()) + linkerContext.linker.init(null) if (!loadAllIr) { for ((loadingLibFile, loadingSrcFiles) in modifiedFiles) { diff --git a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt index 449427b437202..6c95c2f6d62b1 100644 --- a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt +++ b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt @@ -9,8 +9,8 @@ import org.jetbrains.kotlin.backend.common.extensions.FirIncompatiblePluginAPI import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl -import org.jetbrains.kotlin.backend.common.ir.isJvmBuiltin import org.jetbrains.kotlin.backend.common.ir.isBytecodeGenerationSuppressed +import org.jetbrains.kotlin.backend.common.ir.isJvmBuiltin import org.jetbrains.kotlin.backend.common.linkage.issues.checkNoUnboundSymbols import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl import org.jetbrains.kotlin.backend.jvm.codegen.EnumEntriesIntrinsicMappingsCacheImpl @@ -36,7 +36,6 @@ import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrLinker -import org.jetbrains.kotlin.ir.builders.TranslationPluginContext import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.MetadataSource @@ -45,9 +44,7 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl import org.jetbrains.kotlin.ir.linkage.IrProvider import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator -import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable import org.jetbrains.kotlin.ir.util.SymbolTable -import org.jetbrains.kotlin.ir.util.TypeTranslator import org.jetbrains.kotlin.library.metadata.DeserializedKlibModuleOrigin import org.jetbrains.kotlin.library.metadata.KlibModuleOrigin import org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf @@ -174,22 +171,11 @@ open class JvmIrCodegenFactory( DescriptorByIdSignatureFinderImpl(psi2irContext.moduleDescriptor, mangler), jvmGeneratorExtensions ) - val frontEndContext = object : TranslationPluginContext { - override val moduleDescriptor: ModuleDescriptor - get() = psi2irContext.moduleDescriptor - override val symbolTable: ReferenceSymbolTable - get() = symbolTable - override val typeTranslator: TypeTranslator - get() = psi2irContext.typeTranslator - override val irBuiltIns: IrBuiltIns - get() = psi2irContext.irBuiltIns - } val irLinker = JvmIrLinker( psi2irContext.moduleDescriptor, messageCollector, JvmIrTypeSystemContext(psi2irContext.irBuiltIns), symbolTable, - frontEndContext, stubGenerator, mangler, enableIdSignatures, @@ -247,14 +233,7 @@ open class JvmIrCodegenFactory( symbolTable.referenceUndiscoveredExpectSymbols(input.files, input.bindingContext) } - val irModuleFragment = - psi2ir.generateModuleFragment( - psi2irContext, - input.files, - irProviders, - pluginExtensions, - fragmentInfo = evaluatorFragmentInfoForPsi2Ir - ) + val irModuleFragment = psi2ir.generateModuleFragment(psi2irContext, input.files, irProviders, evaluatorFragmentInfoForPsi2Ir) irLinker.postProcess(inOrAfterLinkageStep = true) irLinker.clear() diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt index 1187faa14a355..28936e1146651 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt @@ -83,7 +83,6 @@ class Psi2IrTranslator( context: GeneratorContext, ktFiles: Collection, irProviders: List, - linkerExtensions: Collection, fragmentInfo: EvaluatorFragmentInfo? = null ): IrModuleFragment { @@ -94,7 +93,7 @@ class Psi2IrTranslator( val irModule = moduleGenerator.generateModuleFragment(ktFiles) val deserializers = irProviders.filterIsInstance() - deserializers.forEach { it.init(irModule, linkerExtensions) } + deserializers.forEach { it.init(irModule) } moduleGenerator.generateUnboundSymbolsAsDependencies(irProviders) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/TranslationPluginContext.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/TranslationPluginContext.kt deleted file mode 100644 index 15533f2a28466..0000000000000 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/TranslationPluginContext.kt +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.ir.builders - -import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable -import org.jetbrains.kotlin.ir.util.TypeTranslator - -interface TranslationPluginContext : IrGeneratorContext { - val moduleDescriptor: ModuleDescriptor - val symbolTable: ReferenceSymbolTable - val typeTranslator: TypeTranslator -} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/IrDeserializer.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/IrDeserializer.kt index a8cfc76dc6015..343da8ed903ec 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/IrDeserializer.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/IrDeserializer.kt @@ -5,19 +5,12 @@ package org.jetbrains.kotlin.ir.linkage -import org.jetbrains.kotlin.ir.builders.TranslationPluginContext -import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.name.Name interface IrDeserializer : IrProvider { - - interface IrLinkerExtension { - fun resolveSymbol(symbol: IrSymbol, context: TranslationPluginContext): IrDeclaration? = null - } - enum class TopLevelSymbolKind { FUNCTION_SYMBOL, CLASS_SYMBOL, @@ -25,7 +18,7 @@ interface IrDeserializer : IrProvider { TYPEALIAS_SYMBOL; } - fun init(moduleFragment: IrModuleFragment?, extensions: Collection) {} + fun init(moduleFragment: IrModuleFragment?) {} fun resolveBySignatureInModule(signature: IdSignature, kind: TopLevelSymbolKind, moduleName: Name): IrSymbol /** diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt index 09b23dc3a4136..9f4c499951983 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt @@ -11,18 +11,21 @@ import org.jetbrains.kotlin.backend.common.overrides.FileLocalAwareLinker import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData import org.jetbrains.kotlin.cli.common.messages.MessageCollector -import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.builders.TranslationPluginContext import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrFunctionReference import org.jetbrains.kotlin.ir.expressions.IrPropertyReference import org.jetbrains.kotlin.ir.linkage.IrDeserializer -import org.jetbrains.kotlin.ir.symbols.* -import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol +import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol +import org.jetbrains.kotlin.ir.symbols.IrSymbol +import org.jetbrains.kotlin.ir.symbols.isPublicApi +import org.jetbrains.kotlin.ir.util.IdSignature +import org.jetbrains.kotlin.ir.util.SymbolTable +import org.jetbrains.kotlin.ir.util.file import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.library.KotlinLibrary @@ -46,12 +49,8 @@ abstract class KotlinIrLinker( abstract val fakeOverrideBuilder: IrLinkerFakeOverrideProvider - abstract val translationPluginContext: TranslationPluginContext? - private val triedToDeserializeDeclarationForSymbol = hashSetOf() - private lateinit var linkerExtensions: Collection - open val partialLinkageSupport: PartialLinkageSupportForLinker get() = PartialLinkageSupportForLinker.DISABLED open val returnUnboundSymbolsIfSignatureNotFound: Boolean @@ -125,24 +124,6 @@ abstract class KotlinIrLinker( protected open fun platformSpecificSymbol(symbol: IrSymbol): Boolean = false - private fun tryResolveCustomDeclaration(symbol: IrSymbol): IrDeclaration? { - val descriptor = if (symbol.hasDescriptor) symbol.descriptor else return null - if (descriptor is CallableMemberDescriptor) { - if (descriptor.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) { - // skip fake overrides - return null - } - } - - return translationPluginContext?.let { ctx -> - linkerExtensions.firstNotNullOfOrNull { - it.resolveSymbol(symbol, ctx) - }?.also { - require(symbol.owner == it) - } - } - } - override fun getDeclaration(symbol: IrSymbol): IrDeclaration? = deserializeOrResolveDeclaration(symbol, false) @@ -155,9 +136,7 @@ abstract class KotlinIrLinker( if (!symbol.isBound) { try { - findDeserializedDeclarationForSymbol(symbol) - ?: tryResolveCustomDeclaration(symbol) - ?: return null + findDeserializedDeclarationForSymbol(symbol) ?: return null } catch (e: IrSymbolTypeMismatchException) { SymbolTypeMismatch(e, deserializersForModules.values, userVisibleIrModulesSupport).raiseIssue(messageCollector) } @@ -195,8 +174,7 @@ abstract class KotlinIrLinker( protected open fun createCurrentModuleDeserializer(moduleFragment: IrModuleFragment, dependencies: Collection): IrModuleDeserializer = CurrentModuleDeserializer(moduleFragment, dependencies) - override fun init(moduleFragment: IrModuleFragment?, extensions: Collection) { - linkerExtensions = extensions + override fun init(moduleFragment: IrModuleFragment?) { if (moduleFragment != null) { val currentModuleDependencies = moduleFragment.descriptor.allDependencyModules.map { resolveModuleDeserializer(it, null) diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index dd4fed84ad29a..702dad16e5792 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -252,7 +252,6 @@ fun getIrModuleInfoForKlib( builtIns = irBuiltIns, messageCollector = messageCollector ), - translationPluginContext = null, icData = null, friendModules = friendModules ) @@ -271,7 +270,7 @@ fun getIrModuleInfoForKlib( val moduleFragment = deserializedModuleFragments.last() - irLinker.init(null, emptyList()) + irLinker.init(null) ExternalDependenciesGenerator(symbolTable, listOf(irLinker)).generateUnboundSymbolsAsDependencies() irLinker.postProcess(inOrAfterLinkageStep = true) @@ -300,10 +299,6 @@ fun getIrModuleInfoForSourceFiles( mapping: (KotlinLibrary) -> ModuleDescriptor ): IrModuleInfo { val irBuiltIns = psi2IrContext.irBuiltIns - val feContext = psi2IrContext.run { - JsIrLinker.JsFePluginContext(moduleDescriptor, symbolTable, typeTranslator, irBuiltIns) - } - val irLinker = JsIrLinker( currentModule = psi2IrContext.moduleDescriptor, messageCollector = messageCollector, @@ -314,7 +309,6 @@ fun getIrModuleInfoForSourceFiles( builtIns = irBuiltIns, messageCollector = messageCollector ), - translationPluginContext = feContext, icData = null, friendModules = friendModules, ) @@ -384,7 +378,6 @@ fun GeneratorContext.generateModuleFragmentWithPlugins( stubGenerator: DeclarationStubGenerator? = null ): Pair { val psi2Ir = Psi2IrTranslator(languageVersionSettings, configuration, messageCollector::checkNoUnboundSymbols) - val extensions = IrGenerationExtension.getInstances(project) // plugin context should be instantiated before postprocessing steps val pluginContext = IrPluginContextImpl( @@ -397,27 +390,19 @@ fun GeneratorContext.generateModuleFragmentWithPlugins( linker = irLinker, messageCollector ) - if (extensions.isNotEmpty()) { - for (extension in extensions) { - psi2Ir.addPostprocessingStep { module -> - val old = stubGenerator?.unboundSymbolGeneration - try { - stubGenerator?.unboundSymbolGeneration = true - extension.generate(module, pluginContext) - } finally { - stubGenerator?.unboundSymbolGeneration = old!! - } + for (extension in IrGenerationExtension.getInstances(project)) { + psi2Ir.addPostprocessingStep { module -> + val old = stubGenerator?.unboundSymbolGeneration + try { + stubGenerator?.unboundSymbolGeneration = true + extension.generate(module, pluginContext) + } finally { + stubGenerator?.unboundSymbolGeneration = old!! } } - } - return psi2Ir.generateModuleFragment( - this, - files, - listOf(stubGenerator ?: irLinker), - extensions - ) to pluginContext + return psi2Ir.generateModuleFragment(this, files, listOf(stubGenerator ?: irLinker)) to pluginContext } private fun createBuiltIns(storageManager: StorageManager) = object : KotlinBuiltIns(storageManager) {} diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt index 10d64e505bb2a..a56f513828518 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt @@ -11,11 +11,12 @@ import org.jetbrains.kotlin.backend.common.serialization.* import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.ir.IrBuiltIns -import org.jetbrains.kotlin.ir.builders.TranslationPluginContext import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl -import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator +import org.jetbrains.kotlin.ir.util.IdSignature +import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.library.IrLibrary import org.jetbrains.kotlin.library.KotlinAbiVersion import org.jetbrains.kotlin.library.KotlinLibrary @@ -25,7 +26,6 @@ import org.jetbrains.kotlin.utils.memoryOptimizedMap class JsIrLinker( private val currentModule: ModuleDescriptor?, messageCollector: MessageCollector, builtIns: IrBuiltIns, symbolTable: SymbolTable, override val partialLinkageSupport: PartialLinkageSupportForLinker, - override val translationPluginContext: TranslationPluginContext?, private val icData: ICData? = null, friendModules: Map> = emptyMap(), private val stubGenerator: DeclarationStubGenerator? = null @@ -105,11 +105,4 @@ class JsIrLinker( fun getDeserializedFilesInKlibOrder(fragment: IrModuleFragment): List { return deserializedFilesInKlibOrder[fragment] ?: emptyList() } - - class JsFePluginContext( - override val moduleDescriptor: ModuleDescriptor, - override val symbolTable: ReferenceSymbolTable, - override val typeTranslator: TypeTranslator, - override val irBuiltIns: IrBuiltIns, - ) : TranslationPluginContext } diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt index 37f8362b7cdc3..74fc273f5fc46 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolD import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.builders.TranslationPluginContext import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrField import org.jetbrains.kotlin.ir.declarations.IrModuleFragment @@ -38,7 +37,6 @@ class JvmIrLinker( messageCollector: MessageCollector, typeSystem: IrTypeSystemContext, symbolTable: SymbolTable, - override val translationPluginContext: TranslationPluginContext?, private val stubGenerator: DeclarationStubGenerator, private val manglerDesc: JvmDescriptorMangler, private val enableIdSignatures: Boolean, diff --git a/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt b/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt index ba0a6fa90d665..8c40269040242 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt @@ -14,7 +14,6 @@ import com.intellij.psi.PsiManager import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.backend.common.linkage.issues.checkNoUnboundSymbols import org.jetbrains.kotlin.backend.common.linkage.partial.PartialLinkageSupportForLinker -import org.jetbrains.kotlin.config.phaser.invokeToplevel import org.jetbrains.kotlin.backend.common.serialization.IrSerializationSettings import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor import org.jetbrains.kotlin.build.report.DoNothingBuildReporter @@ -24,6 +23,7 @@ import org.jetbrains.kotlin.cli.js.klib.TopDownAnalyzerFacadeForJSIR import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.config.phaser.invokeToplevel import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.incremental.ChangedFiles @@ -466,13 +466,11 @@ class GenerateIrRuntime { psi2IrContext.irBuiltIns, psi2IrContext.symbolTable, PartialLinkageSupportForLinker.DISABLED, - null ) - val irProviders = listOf(irLinker) - - val psi2IrTranslator = Psi2IrTranslator(languageVersionSettings, psi2IrContext.configuration, messageCollector::checkNoUnboundSymbols) - return psi2IrTranslator.generateModuleFragment(psi2IrContext, files, irProviders, emptyList()) to psi2IrContext.irBuiltIns + val psi2IrTranslator = + Psi2IrTranslator(languageVersionSettings, psi2IrContext.configuration, messageCollector::checkNoUnboundSymbols) + return psi2IrTranslator.generateModuleFragment(psi2IrContext, files, listOf(irLinker)) to psi2IrContext.irBuiltIns } private fun doSerializeModule( @@ -549,10 +547,10 @@ class GenerateIrRuntime { val typeTranslator = TypeTranslatorImpl(symbolTable, languageVersionSettings, moduleDescriptor) val irBuiltIns = IrBuiltInsOverDescriptors(moduleDescriptor.builtIns, typeTranslator, symbolTable) - val jsLinker = JsIrLinker(moduleDescriptor, MessageCollector.NONE, irBuiltIns, symbolTable, PartialLinkageSupportForLinker.DISABLED, null) + val jsLinker = JsIrLinker(moduleDescriptor, MessageCollector.NONE, irBuiltIns, symbolTable, PartialLinkageSupportForLinker.DISABLED) val moduleFragment = jsLinker.deserializeFullModule(moduleDescriptor, moduleDescriptor.kotlinLibrary) - jsLinker.init(null, emptyList()) + jsLinker.init(null) // Create stubs ExternalDependenciesGenerator(symbolTable, listOf(jsLinker)) .generateUnboundSymbolsAsDependencies() @@ -575,11 +573,10 @@ class GenerateIrRuntime { val typeTranslator = TypeTranslatorImpl(symbolTable, languageVersionSettings, moduleDescriptor) val irBuiltIns = IrBuiltInsOverDescriptors(moduleDescriptor.builtIns, typeTranslator, symbolTable) - val jsLinker = JsIrLinker(moduleDescriptor, MessageCollector.NONE, irBuiltIns, symbolTable, PartialLinkageSupportForLinker.DISABLED, null) + val jsLinker = JsIrLinker(moduleDescriptor, MessageCollector.NONE, irBuiltIns, symbolTable, PartialLinkageSupportForLinker.DISABLED) val moduleFragment = jsLinker.deserializeFullModule(moduleDescriptor, moduleDescriptor.kotlinLibrary) - // Create stubs - jsLinker.init(null, emptyList()) + jsLinker.init(null) // Create stubs ExternalDependenciesGenerator(symbolTable, listOf(jsLinker)) .generateUnboundSymbolsAsDependencies() 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 427f9f195ecb7..71d6102d52909 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 @@ -24,18 +24,14 @@ import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.config.messageCollector import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor -import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.builders.TranslationPluginContext import org.jetbrains.kotlin.ir.declarations.DescriptorMetadataSource import org.jetbrains.kotlin.ir.linkage.IrDeserializer import org.jetbrains.kotlin.ir.linkage.partial.partialLinkageConfig import org.jetbrains.kotlin.ir.objcinterop.IrObjCOverridabilityCondition import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.util.IdSignature -import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable import org.jetbrains.kotlin.ir.util.StubGeneratorExtensions -import org.jetbrains.kotlin.ir.util.TypeTranslator import org.jetbrains.kotlin.ir.visitors.acceptVoid import org.jetbrains.kotlin.library.isHeader import org.jetbrains.kotlin.library.metadata.DeserializedKlibModuleOrigin @@ -122,17 +118,6 @@ internal fun PsiToIrContext.psiToIr( val irProviderForCEnumsAndCStructs = IrProviderForCEnumAndCStructStubs(generatorContext, symbols) - val translationContext = object : TranslationPluginContext { - override val moduleDescriptor: ModuleDescriptor - get() = generatorContext.moduleDescriptor - override val symbolTable: ReferenceSymbolTable - get() = symbolTable - override val typeTranslator: TypeTranslator - get() = generatorContext.typeTranslator - override val irBuiltIns: IrBuiltIns - get() = generatorContext.irBuiltIns - } - val friendModules = config.resolvedLibraries.getFullList() .filter { it.libraryFile in config.friendModuleFiles } .map { it.uniqueName } @@ -144,7 +129,6 @@ internal fun PsiToIrContext.psiToIr( KonanIrLinker( currentModule = moduleDescriptor, - translationPluginContext = translationContext, messageCollector = messageCollector, builtIns = generatorContext.irBuiltIns, symbolTable = symbolTable, @@ -222,12 +206,7 @@ internal fun PsiToIrContext.psiToIr( } } - val mainModule = translator.generateModuleFragment( - generatorContext, - environment.getSourceFiles(), - irProviders = listOf(irDeserializer), - linkerExtensions = pluginExtensions, - ) + val mainModule = translator.generateModuleFragment(generatorContext, environment.getSourceFiles(), listOf(irDeserializer)) irDeserializer.postProcess(inOrAfterLinkageStep = true) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrLinker.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrLinker.kt index ad55807048cde..08fd945879900 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrLinker.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrLinker.kt @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.builders.TranslationPluginContext import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.overrides.IrExternalOverridabilityCondition import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl @@ -258,7 +257,6 @@ internal object EagerInitializedPropertySerializer { @OptIn(ObsoleteDescriptorBasedAPI::class) internal class KonanIrLinker( private val currentModule: ModuleDescriptor, - override val translationPluginContext: TranslationPluginContext?, messageCollector: MessageCollector, builtIns: IrBuiltIns, symbolTable: SymbolTable, diff --git a/kotlin-native/klib/src/org/jetbrains/kotlin/cli/klib/KlibToolIrLinker.kt b/kotlin-native/klib/src/org/jetbrains/kotlin/cli/klib/KlibToolIrLinker.kt index 858f5058cdfd5..7f4a50acf4603 100644 --- a/kotlin-native/klib/src/org/jetbrains/kotlin/cli/klib/KlibToolIrLinker.kt +++ b/kotlin-native/klib/src/org/jetbrains/kotlin/cli/klib/KlibToolIrLinker.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.library.KotlinAbiVersion import org.jetbrains.kotlin.library.KotlinLibrary -import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled internal class KlibToolIrLinker( output: KlibToolOutput, @@ -37,8 +36,6 @@ internal class KlibToolIrLinker( override val returnUnboundSymbolsIfSignatureNotFound get() = true - override val translationPluginContext get() = shouldNotBeCalled() - override fun createModuleDeserializer( moduleDescriptor: ModuleDescriptor, klib: KotlinLibrary?, diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/ClassicFrontend2NativeIrConverter.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/ClassicFrontend2NativeIrConverter.kt index 9a7405c6d7bd2..5d5d57a867173 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/ClassicFrontend2NativeIrConverter.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/ClassicFrontend2NativeIrConverter.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.konan.test -import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl import org.jetbrains.kotlin.backend.common.linkage.issues.checkNoUnboundSymbols import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl @@ -19,7 +18,10 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.linkage.IrDeserializer import org.jetbrains.kotlin.ir.linkage.partial.partialLinkageConfig import org.jetbrains.kotlin.ir.symbols.IrSymbol -import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.util.IdSignature +import org.jetbrains.kotlin.ir.util.IdSignatureComposer +import org.jetbrains.kotlin.ir.util.StubGeneratorExtensions +import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.konan.test.blackbox.support.CastCompatibleKotlinNativeClassLoader import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.name.Name @@ -110,14 +112,8 @@ class ClassicFrontend2NativeIrConverter( override fun postProcess(inOrAfterLinkageStep: Boolean) = Unit } - val pluginExtensions = IrGenerationExtension.getInstances(project) - val moduleFragment = translator.generateModuleFragment( - generatorContext, - sourceFiles, - irProviders = listOf(irDeserializer), - linkerExtensions = pluginExtensions, - ) + val moduleFragment = translator.generateModuleFragment(generatorContext, sourceFiles, listOf(irDeserializer)) val pluginContext = IrPluginContextImpl( generatorContext.moduleDescriptor,