FIR2IR entry points: don't create JvmDescriptorMangler if not needed
This commit is contained in:
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.fir.pipeline
|
package org.jetbrains.kotlin.fir.pipeline
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrConverter
|
import org.jetbrains.kotlin.fir.backend.Fir2IrConverter
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
||||||
@@ -20,7 +19,6 @@ import org.jetbrains.kotlin.fir.moduleData
|
|||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
|
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||||
|
|
||||||
@@ -30,22 +28,17 @@ fun FirSession.convertToIr(
|
|||||||
fir2IrExtensions: Fir2IrExtensions,
|
fir2IrExtensions: Fir2IrExtensions,
|
||||||
irGeneratorExtensions: Collection<IrGenerationExtension>
|
irGeneratorExtensions: Collection<IrGenerationExtension>
|
||||||
): Fir2IrResult {
|
): Fir2IrResult {
|
||||||
val mangler = JvmDescriptorMangler(null)
|
|
||||||
val signaturer = JvmIdSignatureDescriptor(mangler)
|
|
||||||
|
|
||||||
val commonFirFiles = moduleData.dependsOnDependencies
|
val commonFirFiles = moduleData.dependsOnDependencies
|
||||||
.map { it.session }
|
.map { it.session }
|
||||||
.filter { it.kind == FirSession.Kind.Source }
|
.filter { it.kind == FirSession.Kind.Source }
|
||||||
.flatMap { (it.firProvider as FirProviderImpl).getAllFirFiles() }
|
.flatMap { (it.firProvider as FirProviderImpl).getAllFirFiles() }
|
||||||
|
|
||||||
return Fir2IrConverter.createModuleFragment(
|
return Fir2IrConverter.createModuleFragmentWithoutSignatures(
|
||||||
this, scopeSession, firFiles + commonFirFiles,
|
this, scopeSession, firFiles + commonFirFiles,
|
||||||
languageVersionSettings, signaturer,
|
languageVersionSettings, fir2IrExtensions,
|
||||||
fir2IrExtensions,
|
FirJvmKotlinMangler(this),
|
||||||
FirJvmKotlinMangler(this), JvmIrMangler, IrFactoryImpl,
|
JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter,
|
||||||
FirJvmVisibilityConverter,
|
|
||||||
Fir2IrJvmSpecialAnnotationSymbolProvider(),
|
Fir2IrJvmSpecialAnnotationSymbolProvider(),
|
||||||
irGeneratorExtensions,
|
irGeneratorExtensions
|
||||||
generateSignatures = false
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ import org.jetbrains.kotlin.KtSourceFileLinesMappingFromLineStartOffsets
|
|||||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||||
import org.jetbrains.kotlin.config.AnalysisFlags
|
import org.jetbrains.kotlin.config.AnalysisFlags
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.*
|
import org.jetbrains.kotlin.fir.backend.generators.*
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.DataClassMembersGenerator
|
import org.jetbrains.kotlin.fir.backend.generators.DataClassMembersGenerator
|
||||||
@@ -394,7 +397,7 @@ class Fir2IrConverter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createModuleFragment(
|
fun createModuleFragmentWithSignaturesIfNeeded(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
firFiles: List<FirFile>,
|
firFiles: List<FirFile>,
|
||||||
@@ -409,10 +412,64 @@ class Fir2IrConverter(
|
|||||||
irGenerationExtensions: Collection<IrGenerationExtension>,
|
irGenerationExtensions: Collection<IrGenerationExtension>,
|
||||||
generateSignatures: Boolean
|
generateSignatures: Boolean
|
||||||
): Fir2IrResult {
|
): Fir2IrResult {
|
||||||
val moduleDescriptor = FirModuleDescriptor(session)
|
if (!generateSignatures) {
|
||||||
|
return createModuleFragmentWithoutSignatures(
|
||||||
|
session, scopeSession, firFiles, languageVersionSettings,
|
||||||
|
fir2IrExtensions, mangler, irMangler, irFactory,
|
||||||
|
visibilityConverter, specialSymbolProvider, irGenerationExtensions
|
||||||
|
)
|
||||||
|
}
|
||||||
val signatureComposer = FirBasedSignatureComposer(mangler)
|
val signatureComposer = FirBasedSignatureComposer(mangler)
|
||||||
val wrappedSignaturer = WrappedDescriptorSignatureComposer(signaturer, signatureComposer)
|
val wrappedSignaturer = WrappedDescriptorSignatureComposer(signaturer, signatureComposer)
|
||||||
val symbolTable = SymbolTable(wrappedSignaturer, irFactory)
|
val symbolTable = SymbolTable(wrappedSignaturer, irFactory)
|
||||||
|
return createModuleFragmentWithSymbolTable(
|
||||||
|
session, scopeSession, firFiles, languageVersionSettings,
|
||||||
|
fir2IrExtensions, irMangler, irFactory, visibilityConverter,
|
||||||
|
specialSymbolProvider, irGenerationExtensions, signatureComposer,
|
||||||
|
symbolTable, generateSignatures = true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun createModuleFragmentWithoutSignatures(
|
||||||
|
session: FirSession,
|
||||||
|
scopeSession: ScopeSession,
|
||||||
|
firFiles: List<FirFile>,
|
||||||
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
|
fir2IrExtensions: Fir2IrExtensions,
|
||||||
|
mangler: FirMangler,
|
||||||
|
irMangler: KotlinMangler.IrMangler,
|
||||||
|
irFactory: IrFactory,
|
||||||
|
visibilityConverter: Fir2IrVisibilityConverter,
|
||||||
|
specialSymbolProvider: Fir2IrSpecialSymbolProvider,
|
||||||
|
irGenerationExtensions: Collection<IrGenerationExtension>
|
||||||
|
): Fir2IrResult {
|
||||||
|
val signatureComposer = FirBasedSignatureComposer(mangler)
|
||||||
|
val signaturer = DescriptorSignatureComposerStub()
|
||||||
|
val symbolTable = SymbolTable(signaturer, irFactory)
|
||||||
|
return createModuleFragmentWithSymbolTable(
|
||||||
|
session, scopeSession, firFiles, languageVersionSettings,
|
||||||
|
fir2IrExtensions, irMangler, irFactory, visibilityConverter,
|
||||||
|
specialSymbolProvider, irGenerationExtensions, signatureComposer,
|
||||||
|
symbolTable, generateSignatures = false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun createModuleFragmentWithSymbolTable(
|
||||||
|
session: FirSession,
|
||||||
|
scopeSession: ScopeSession,
|
||||||
|
firFiles: List<FirFile>,
|
||||||
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
|
fir2IrExtensions: Fir2IrExtensions,
|
||||||
|
irMangler: KotlinMangler.IrMangler,
|
||||||
|
irFactory: IrFactory,
|
||||||
|
visibilityConverter: Fir2IrVisibilityConverter,
|
||||||
|
specialSymbolProvider: Fir2IrSpecialSymbolProvider,
|
||||||
|
irGenerationExtensions: Collection<IrGenerationExtension>,
|
||||||
|
signatureComposer: FirBasedSignatureComposer,
|
||||||
|
symbolTable: SymbolTable,
|
||||||
|
generateSignatures: Boolean
|
||||||
|
): Fir2IrResult {
|
||||||
|
val moduleDescriptor = FirModuleDescriptor(session)
|
||||||
val components = Fir2IrComponentsStorage(
|
val components = Fir2IrComponentsStorage(
|
||||||
session, scopeSession, symbolTable, irFactory, signatureComposer, fir2IrExtensions, generateSignatures
|
session, scopeSession, symbolTable, irFactory, signatureComposer, fir2IrExtensions, generateSignatures
|
||||||
)
|
)
|
||||||
@@ -475,3 +532,25 @@ private class WrappedDescriptorSignatureComposer(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class DescriptorSignatureComposerStub : IdSignatureComposer {
|
||||||
|
override fun composeSignature(descriptor: DeclarationDescriptor): IdSignature? {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun composeEnumEntrySignature(descriptor: ClassDescriptor): IdSignature? {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun composeFieldSignature(descriptor: PropertyDescriptor): IdSignature? {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun composeAnonInitSignature(descriptor: ClassDescriptor): IdSignature? {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun withFileSignature(fileSignature: IdSignature.FileSignature, body: () -> Unit) {
|
||||||
|
body()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+4
-9
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.KtSourceFile
|
|||||||
import org.jetbrains.kotlin.KtVirtualFileSourceFile
|
import org.jetbrains.kotlin.KtVirtualFileSourceFile
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
|
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
|
||||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
|
||||||
import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS
|
import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS
|
||||||
import org.jetbrains.kotlin.build.report.BuildReporter
|
import org.jetbrains.kotlin.build.report.BuildReporter
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
@@ -55,7 +54,6 @@ import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
|||||||
import org.jetbrains.kotlin.incremental.components.InlineConstTracker
|
import org.jetbrains.kotlin.incremental.components.InlineConstTracker
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.incremental.multiproject.ModulesApiHistory
|
import org.jetbrains.kotlin.incremental.multiproject.ModulesApiHistory
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
|
|
||||||
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||||
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
import org.jetbrains.kotlin.ir.util.IrMessageLogger
|
||||||
@@ -272,20 +270,17 @@ class IncrementalFirJvmCompilerRunner(
|
|||||||
val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
||||||
val irGenerationExtensions =
|
val irGenerationExtensions =
|
||||||
(projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty()
|
(projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty()
|
||||||
val signaturer = JvmIdSignatureDescriptor(JvmDescriptorMangler(null))
|
|
||||||
val allCommonFirFiles = cycleResult.session.moduleData.dependsOnDependencies
|
val allCommonFirFiles = cycleResult.session.moduleData.dependsOnDependencies
|
||||||
.map { it.session }
|
.map { it.session }
|
||||||
.filter { it.kind == FirSession.Kind.Source }
|
.filter { it.kind == FirSession.Kind.Source }
|
||||||
.flatMap { (it.firProvider as FirProviderImpl).getAllFirFiles() }
|
.flatMap { (it.firProvider as FirProviderImpl).getAllFirFiles() }
|
||||||
|
|
||||||
val (irModuleFragment, components) = Fir2IrConverter.createModuleFragment(
|
val (irModuleFragment, components) = Fir2IrConverter.createModuleFragmentWithoutSignatures(
|
||||||
cycleResult.session, cycleResult.scopeSession, cycleResult.fir + allCommonFirFiles,
|
cycleResult.session, cycleResult.scopeSession, cycleResult.fir + allCommonFirFiles,
|
||||||
cycleResult.session.languageVersionSettings, signaturer,
|
cycleResult.session.languageVersionSettings, extensions,
|
||||||
extensions, FirJvmKotlinMangler(cycleResult.session), JvmIrMangler, IrFactoryImpl,
|
FirJvmKotlinMangler(cycleResult.session), JvmIrMangler, IrFactoryImpl, FirJvmVisibilityConverter,
|
||||||
FirJvmVisibilityConverter,
|
|
||||||
Fir2IrJvmSpecialAnnotationSymbolProvider(),
|
Fir2IrJvmSpecialAnnotationSymbolProvider(),
|
||||||
irGenerationExtensions,
|
irGenerationExtensions
|
||||||
generateSignatures = false
|
|
||||||
)
|
)
|
||||||
|
|
||||||
performanceManager?.notifyIRTranslationFinished()
|
performanceManager?.notifyIRTranslationFinished()
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ class FirAnalyzerFacade(
|
|||||||
.filter { it.kind == FirSession.Kind.Source }
|
.filter { it.kind == FirSession.Kind.Source }
|
||||||
.flatMap { (it.firProvider as FirProviderImpl).getAllFirFiles() }
|
.flatMap { (it.firProvider as FirProviderImpl).getAllFirFiles() }
|
||||||
|
|
||||||
return Fir2IrConverter.createModuleFragment(
|
return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
||||||
session, _scopeSession!!, firFiles!! + commonFirFiles,
|
session, _scopeSession!!, firFiles!! + commonFirFiles,
|
||||||
languageVersionSettings, signaturer,
|
languageVersionSettings, signaturer,
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
|
|||||||
Reference in New Issue
Block a user