Fir2Ir: add irProviders to Fir2IrComponents
Removes the last use of DeclarationStubGenerator in the FIR pipeline.
This commit is contained in:
committed by
Alexander Udalov
parent
13d4d60afa
commit
3f66b31a47
+1
-1
@@ -344,7 +344,7 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
generationState.beforeCompile()
|
generationState.beforeCompile()
|
||||||
generationState.oldBEInitTrace(ktFiles)
|
generationState.oldBEInitTrace(ktFiles)
|
||||||
codegenFactory.generateModuleInFrontendIRMode(
|
codegenFactory.generateModuleInFrontendIRMode(
|
||||||
generationState, moduleFragment, symbolTable, extensions, FirJvmBackendExtension(session, components)
|
generationState, moduleFragment, symbolTable, components.irProviders, extensions, FirJvmBackendExtension(session, components)
|
||||||
) {
|
) {
|
||||||
performanceManager?.notifyIRLoweringFinished()
|
performanceManager?.notifyIRLoweringFinished()
|
||||||
performanceManager?.notifyIRGenerationStarted()
|
performanceManager?.notifyIRGenerationStarted()
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ fun generateCodeFromIr(
|
|||||||
|
|
||||||
generationState.beforeCompile()
|
generationState.beforeCompile()
|
||||||
codegenFactory.generateModuleInFrontendIRMode(
|
codegenFactory.generateModuleInFrontendIRMode(
|
||||||
generationState, input.irModuleFragment, input.symbolTable, input.extensions,
|
generationState, input.irModuleFragment, input.symbolTable, input.components.irProviders, input.extensions,
|
||||||
FirJvmBackendExtension(input.firSession, input.components)
|
FirJvmBackendExtension(input.firSession, input.components)
|
||||||
) {
|
) {
|
||||||
performanceManager?.notifyIRLoweringFinished()
|
performanceManager?.notifyIRLoweringFinished()
|
||||||
|
|||||||
+1
-2
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.config.JvmSerializeIrMode
|
|||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
||||||
import org.jetbrains.kotlin.fir.backend.FirIrProvider
|
|
||||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
@@ -86,7 +85,7 @@ class JvmFir2IrExtensions(configuration: CompilerConfiguration) : Fir2IrExtensio
|
|||||||
} ?: return false
|
} ?: return false
|
||||||
deserializeFromByteArray(
|
deserializeFromByteArray(
|
||||||
serializedIr,
|
serializedIr,
|
||||||
irBuiltIns, symbolTable, listOf(FirIrProvider(this)),
|
irBuiltIns, symbolTable, irProviders,
|
||||||
irClass,
|
irClass,
|
||||||
JvmIrTypeSystemContext(irBuiltIns), allowErrorNodes = false
|
JvmIrTypeSystemContext(irBuiltIns), allowErrorNodes = false
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
|||||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.IrLock
|
import org.jetbrains.kotlin.ir.IrLock
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||||
|
import org.jetbrains.kotlin.ir.linkage.IrProvider
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
|
|
||||||
interface Fir2IrComponents {
|
interface Fir2IrComponents {
|
||||||
@@ -26,6 +27,7 @@ interface Fir2IrComponents {
|
|||||||
val irBuiltIns: IrBuiltIns
|
val irBuiltIns: IrBuiltIns
|
||||||
val builtIns: Fir2IrBuiltIns
|
val builtIns: Fir2IrBuiltIns
|
||||||
val irFactory: IrFactory
|
val irFactory: IrFactory
|
||||||
|
val irProviders: List<IrProvider>
|
||||||
val lock: IrLock
|
val lock: IrLock
|
||||||
|
|
||||||
val classifierStorage: Fir2IrClassifierStorage
|
val classifierStorage: Fir2IrClassifierStorage
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.signaturer.FirBasedSignatureComposer
|
|||||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.IrLock
|
import org.jetbrains.kotlin.ir.IrLock
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||||
|
import org.jetbrains.kotlin.ir.linkage.IrProvider
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
|
|
||||||
class Fir2IrComponentsStorage(
|
class Fir2IrComponentsStorage(
|
||||||
@@ -32,6 +33,7 @@ class Fir2IrComponentsStorage(
|
|||||||
|
|
||||||
override lateinit var irBuiltIns: IrBuiltIns
|
override lateinit var irBuiltIns: IrBuiltIns
|
||||||
override lateinit var builtIns: Fir2IrBuiltIns
|
override lateinit var builtIns: Fir2IrBuiltIns
|
||||||
|
override lateinit var irProviders: List<IrProvider>
|
||||||
|
|
||||||
override lateinit var typeConverter: Fir2IrTypeConverter
|
override lateinit var typeConverter: Fir2IrTypeConverter
|
||||||
override lateinit var visibilityConverter: Fir2IrVisibilityConverter
|
override lateinit var visibilityConverter: Fir2IrVisibilityConverter
|
||||||
|
|||||||
@@ -459,6 +459,8 @@ class Fir2IrConverter(
|
|||||||
components.fakeOverrideGenerator = fakeOverrideGenerator
|
components.fakeOverrideGenerator = fakeOverrideGenerator
|
||||||
val callGenerator = CallAndReferenceGenerator(components, fir2irVisitor, conversionScope)
|
val callGenerator = CallAndReferenceGenerator(components, fir2irVisitor, conversionScope)
|
||||||
components.callGenerator = callGenerator
|
components.callGenerator = callGenerator
|
||||||
|
val irProvider = FirIrProvider(components)
|
||||||
|
components.irProviders = listOf(irProvider)
|
||||||
|
|
||||||
fir2IrExtensions.registerDeclarations(symbolTable)
|
fir2IrExtensions.registerDeclarations(symbolTable)
|
||||||
|
|
||||||
|
|||||||
+1
-14
@@ -44,7 +44,6 @@ import org.jetbrains.kotlin.psi2ir.generators.DeclarationStubGeneratorForNotFoun
|
|||||||
import org.jetbrains.kotlin.psi2ir.generators.DeclarationStubGeneratorImpl
|
import org.jetbrains.kotlin.psi2ir.generators.DeclarationStubGeneratorImpl
|
||||||
import org.jetbrains.kotlin.psi2ir.generators.fragments.EvaluatorFragmentInfo
|
import org.jetbrains.kotlin.psi2ir.generators.fragments.EvaluatorFragmentInfo
|
||||||
import org.jetbrains.kotlin.psi2ir.generators.fragments.FragmentContext
|
import org.jetbrains.kotlin.psi2ir.generators.fragments.FragmentContext
|
||||||
import org.jetbrains.kotlin.psi2ir.generators.generateTypicalIrProviderList
|
|
||||||
import org.jetbrains.kotlin.psi2ir.preprocessing.SourceDeclarationsPreprocessor
|
import org.jetbrains.kotlin.psi2ir.preprocessing.SourceDeclarationsPreprocessor
|
||||||
import org.jetbrains.kotlin.resolve.CleanableBindingContext
|
import org.jetbrains.kotlin.resolve.CleanableBindingContext
|
||||||
|
|
||||||
@@ -292,26 +291,14 @@ open class JvmIrCodegenFactory(
|
|||||||
state: GenerationState,
|
state: GenerationState,
|
||||||
irModuleFragment: IrModuleFragment,
|
irModuleFragment: IrModuleFragment,
|
||||||
symbolTable: SymbolTable,
|
symbolTable: SymbolTable,
|
||||||
|
irProviders: List<IrProvider>,
|
||||||
extensions: JvmGeneratorExtensions,
|
extensions: JvmGeneratorExtensions,
|
||||||
backendExtension: JvmBackendExtension,
|
backendExtension: JvmBackendExtension,
|
||||||
notifyCodegenStart: () -> Unit = {}
|
notifyCodegenStart: () -> Unit = {}
|
||||||
) {
|
) {
|
||||||
val irProviders = configureBuiltInsAndGenerateIrProvidersInFrontendIRMode(irModuleFragment, symbolTable, jvmGeneratorExtensions)
|
|
||||||
generateModule(
|
generateModule(
|
||||||
state,
|
state,
|
||||||
JvmIrBackendInput(irModuleFragment, symbolTable, phaseConfig, irProviders, extensions, backendExtension, notifyCodegenStart)
|
JvmIrBackendInput(irModuleFragment, symbolTable, phaseConfig, irProviders, extensions, backendExtension, notifyCodegenStart)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun configureBuiltInsAndGenerateIrProvidersInFrontendIRMode(
|
|
||||||
irModuleFragment: IrModuleFragment,
|
|
||||||
symbolTable: SymbolTable,
|
|
||||||
extensions: JvmGeneratorExtensionsImpl,
|
|
||||||
): List<IrProvider> {
|
|
||||||
return generateTypicalIrProviderList(
|
|
||||||
irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable,
|
|
||||||
DescriptorByIdSignatureFinderImpl(irModuleFragment.descriptor, JvmDescriptorMangler(null)),
|
|
||||||
extensions = extensions
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-4
@@ -71,9 +71,6 @@ class Fir2IrResultsConverter(
|
|||||||
FirJvmBackendClassResolver(components)
|
FirJvmBackendClassResolver(components)
|
||||||
).build()
|
).build()
|
||||||
|
|
||||||
val extensions = JvmGeneratorExtensionsImpl(configuration)
|
|
||||||
val irProviders = codegenFactory.configureBuiltInsAndGenerateIrProvidersInFrontendIRMode(irModuleFragment, symbolTable, extensions)
|
|
||||||
|
|
||||||
return IrBackendInput.JvmIrBackendInput(
|
return IrBackendInput.JvmIrBackendInput(
|
||||||
generationState,
|
generationState,
|
||||||
codegenFactory,
|
codegenFactory,
|
||||||
@@ -81,7 +78,7 @@ class Fir2IrResultsConverter(
|
|||||||
irModuleFragment,
|
irModuleFragment,
|
||||||
symbolTable,
|
symbolTable,
|
||||||
phaseConfig,
|
phaseConfig,
|
||||||
irProviders,
|
components.irProviders,
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
FirJvmBackendExtension(inputArtifact.session, components),
|
FirJvmBackendExtension(inputArtifact.session, components),
|
||||||
notifyCodegenStart = {},
|
notifyCodegenStart = {},
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.TestsCompiletimeError
|
|||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||||
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl
|
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||||
@@ -134,7 +133,8 @@ object GenerationUtils {
|
|||||||
generationState.beforeCompile()
|
generationState.beforeCompile()
|
||||||
generationState.oldBEInitTrace(files)
|
generationState.oldBEInitTrace(files)
|
||||||
codegenFactory.generateModuleInFrontendIRMode(
|
codegenFactory.generateModuleInFrontendIRMode(
|
||||||
generationState, moduleFragment, symbolTable, fir2IrExtensions, FirJvmBackendExtension(session, components),
|
generationState, moduleFragment, symbolTable, components.irProviders,
|
||||||
|
fir2IrExtensions, FirJvmBackendExtension(session, components),
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
generationState.factory.done()
|
generationState.factory.done()
|
||||||
|
|||||||
Reference in New Issue
Block a user