Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -245,8 +245,6 @@ internal class KaFirCompilerFacility(
val chunkRegistrar = CompilationChunkRegistrar(mainFile, mainFirFile, target, actualizer)
val chunks = collectCompilationChunks(chunkRegistrar, compilationPeerData, codeFragmentMappings)

val jvmIrDeserializer = JvmIrDeserializerImpl()

val registeredCodeProviders = ArrayList<CompiledCodeProvider>()

val contextDeclarationCache = if (codeFragmentMappings != null) {
Expand Down Expand Up @@ -307,7 +305,6 @@ internal class KaFirCompilerFacility(
configuration,
target,
allowedErrorFilter,
jvmIrDeserializer,
codeFragmentMappings?.takeIf { chunk.hasCodeFragments },
generateClassFilter,
KaFirDelegatingCompiledCodeProvider(registeredCodeProviders),
Expand Down Expand Up @@ -967,7 +964,6 @@ internal class KaFirCompilerFacility(
baseConfiguration: CompilerConfiguration,
target: KaCompilerTarget.Jvm,
allowedErrorFilter: (KaDiagnostic) -> Boolean,
jvmIrDeserializer: JvmIrDeserializer,
codeFragmentMappings: CodeFragmentMappings?,
generateClassFilter: GenerationState.GenerateClassFilter,
compiledCodeProvider: CompiledCodeProvider,
Expand All @@ -980,7 +976,7 @@ internal class KaFirCompilerFacility(
put(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, session.languageVersionSettings)
}

val baseFir2IrExtensions = JvmFir2IrExtensions(configuration, jvmIrDeserializer)
val baseFir2IrExtensions = JvmFir2IrExtensions(configuration)

val fir2IrExtensions = when {
codeFragmentMappings != null && chunk.mainFile != null -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import com.intellij.psi.search.GlobalSearchScope
import com.intellij.util.io.URLUtil
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
import org.jetbrains.kotlin.backend.jvm.JvmIrSpecialAnnotationSymbolProvider
import org.jetbrains.kotlin.backend.jvm.JvmIrTypeSystemContext
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
Expand Down Expand Up @@ -65,7 +64,7 @@ fun convertAnalyzedFirToIr(
frontendOutput: AllModulesFrontendOutput,
environment: ModuleCompilerEnvironment
): ModuleCompilerIrBackendInput {
val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl())
val extensions = JvmFir2IrExtensions(configuration)

val (moduleFragment, components, pluginContext, irActualizedResult, _, symbolTable) =
frontendOutput.convertToIrAndActualizeForJvm(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package org.jetbrains.kotlin.cli.pipeline.jvm

import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
import org.jetbrains.kotlin.cli.common.diagnosticsCollector
import org.jetbrains.kotlin.cli.jvm.compiler.findMainClass
import org.jetbrains.kotlin.cli.jvm.compiler.legacy.pipeline.convertToIrAndActualizeForJvm
Expand All @@ -28,7 +27,7 @@ object JvmFir2IrPipelinePhase : PipelinePhase<JvmFrontendPipelineArtifact, JvmFi

fun executePhase(input: JvmFrontendPipelineArtifact, irGenerationExtensions: List<IrGenerationExtension>): JvmFir2IrPipelineArtifact? {
val (firResult, configuration, environment, sourceFiles) = input
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl())
val fir2IrExtensions = JvmFir2IrExtensions(configuration)
val fir2IrAndIrActualizerResult = firResult.convertToIrAndActualizeForJvm(
fir2IrExtensions,
configuration,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.ir.util.SymbolTable
object NativeFir2IrExtensions : Fir2IrExtensions {
override val parametersAreAssignable: Boolean get() = false
override val externalOverridabilityConditions: List<IrExternalOverridabilityCondition> = listOf(IrObjCOverridabilityCondition)
override fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents): Boolean = false
override fun findInjectedValue(calleeReference: FirReference, conversionScope: Fir2IrConversionScope): InjectedValue? = null
override fun findInjectedInlineLambdaArgument(parameter: FirValueParameterSymbol): FirExpression? = null

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,13 @@ package org.jetbrains.kotlin.fir.backend.jvm

import org.jetbrains.kotlin.backend.jvm.CachedFieldsForObjectInstances
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializer
import org.jetbrains.kotlin.backend.jvm.JvmSymbols
import org.jetbrains.kotlin.backend.jvm.overrides.IrJavaIncompatibilityRulesOverridabilityCondition
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
import org.jetbrains.kotlin.fir.backend.Fir2IrConversionScope
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
import org.jetbrains.kotlin.fir.backend.utils.InjectedValue
Expand Down Expand Up @@ -45,7 +42,6 @@ import org.jetbrains.kotlin.utils.addToStdlib.runIf

class JvmFir2IrExtensions(
configuration: CompilerConfiguration,
private val irDeserializer: JvmIrDeserializer,
) : Fir2IrExtensions, JvmGeneratorExtensions {
private var irBuiltIns: IrBuiltIns? = null
private var symbolTable: SymbolTable? = null
Expand Down Expand Up @@ -95,14 +91,6 @@ class JvmFir2IrExtensions(

override fun findInjectedInlineLambdaArgument(parameter: FirValueParameterSymbol): FirExpression? = null

override fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents): Boolean {
val builtIns = irBuiltIns ?: error("BuiltIns are not initialized")
val symbolTable = symbolTable ?: error("SymbolTable is not initialized")
return irDeserializer.deserializeTopLevelClass(
irClass, builtIns, symbolTable, components.irProviders, this
)
}

override fun hasBackingField(property: FirProperty, session: FirSession): Boolean =
property.origin is FirDeclarationOrigin.Java ||
// Metadata for properties says that the backing field doesn't exist,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ interface Fir2IrExtensions {

val externalOverridabilityConditions: List<IrExternalOverridabilityCondition>

fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents): Boolean
fun findInjectedValue(calleeReference: FirReference, conversionScope: Fir2IrConversionScope): InjectedValue?
fun findInjectedInlineLambdaArgument(parameter: FirValueParameterSymbol): FirExpression?

Expand Down Expand Up @@ -60,7 +59,6 @@ interface Fir2IrExtensions {
get() = false

override val externalOverridabilityConditions: List<IrExternalOverridabilityCondition> = emptyList()
override fun deserializeToplevelClass(irClass: IrClass, components: Fir2IrComponents): Boolean = false
override fun findInjectedValue(calleeReference: FirReference, conversionScope: Fir2IrConversionScope): Nothing? = null
override fun findInjectedInlineLambdaArgument(parameter: FirValueParameterSymbol): FirExpression? = null
override fun hasBackingField(property: FirProperty, session: FirSession): Boolean = property.hasBackingField
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,12 @@ sealed class FirMetadataSource : MetadataSource {
}

class File(override val fir: FirFile) : FirMetadataSource(), MetadataSource.File {
override var serializedIr: ByteArray? = null

override fun asEvaluatedConstTrackerKey(): EvaluatedConstTracker.Key? {
return fir.symbol
}
}

class Class(override val fir: FirClass) : FirMetadataSource(), MetadataSource.Class {
override var serializedIr: ByteArray? = null

override fun recordLocalClassType(type: FqName) {
require(fir.isLocal) {
"Local class type should be recorded only for local classes, but got ${fir.render()}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.UnsafeDuringIrConstructionAPI
import org.jetbrains.kotlin.ir.types.IrSimpleType
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.deserializedIr
import org.jetbrains.kotlin.ir.util.isEnumClass
import org.jetbrains.kotlin.ir.util.isObject
import org.jetbrains.kotlin.name.Name
Expand All @@ -53,10 +52,6 @@ class Fir2IrLazyClass(
this.parent = parent
symbol.bind(this)
classifierStorage.preCacheTypeParameters(fir)
this.deserializedIr = lazy {
assert(parent is IrPackageFragment)
extensions.deserializeToplevelClass(this, this)
}
}

override var annotations: List<IrAnnotation> by createLazyAnnotations()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.KtIoFileSourceFile
import org.jetbrains.kotlin.KtSourceFile
import org.jetbrains.kotlin.KtVirtualFileSourceFile
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.jvm.JvmIrDeserializerImpl
import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS
import org.jetbrains.kotlin.build.report.BuildReporter
import org.jetbrains.kotlin.build.report.metrics.BuildPerformanceMetric
Expand Down Expand Up @@ -283,7 +282,7 @@ open class IncrementalFirJvmCompilerRunner(

val cycleResult = firIncrementalCycle() ?: return ExitCode.COMPILATION_ERROR to allCompiledSources

val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl())
val extensions = JvmFir2IrExtensions(configuration)
val irGenerationExtensions = configuration.getCompilerExtensions(IrGenerationExtension)
val (irModuleFragment, components, pluginContext, irActualizedResult, _, symbolTable) = cycleResult.convertToIrAndActualizeForJvm(
extensions, configuration, compilerEnvironment.diagnosticsReporter, irGenerationExtensions,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -289,11 +289,6 @@ class ClassCodegen private constructor(
entry is MultifileFacadeFileEntry -> KotlinClassHeader.Kind.MULTIFILE_CLASS
else -> KotlinClassHeader.Kind.SYNTHETIC_CLASS
}
val serializedIr = when (metadata) {
is MetadataSource.Class -> metadata.serializedIr
is MetadataSource.File -> metadata.serializedIr
else -> null
}

val isMultifileClassOrPart = kind == KotlinClassHeader.Kind.MULTIFILE_CLASS || kind == KotlinClassHeader.Kind.MULTIFILE_CLASS_PART

Expand Down Expand Up @@ -352,7 +347,6 @@ class ClassCodegen private constructor(
av.visit(JvmAnnotationNames.METADATA_PACKAGE_NAME_FIELD_NAME, irClass.fqNameWhenAvailable!!.parent().asString())
}
}
serializedIr?.let { storeSerializedIr(it) }
}

private fun IrFile.loadSourceFilesInfo(): List<File> {
Expand Down Expand Up @@ -559,17 +553,6 @@ class ClassCodegen private constructor(
}
}

private fun storeSerializedIr(serializedIr: ByteArray) {
val av = visitor.newAnnotation(JvmAnnotationNames.SERIALIZED_IR_DESC, true)
val partsVisitor = av.visitArray(JvmAnnotationNames.SERIALIZED_IR_BYTES_FIELD_NAME)
val serializedIrParts = BitEncoding.encodeBytes(serializedIr)
for (part in serializedIrParts) {
partsVisitor.visit(null, part)
}
partsVisitor.visitEnd()
av.visitEnd()
}

companion object {
private var IrClass.classCodegen: ClassCodegen? by irAttribute(copyByDefault = false)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,21 +84,12 @@ open class JvmGeneratorExtensionsImpl(
if (deserializedSource.facadeClassName != null) IrDeclarationOrigin.JVM_MULTIFILE_CLASS else IrDeclarationOrigin.FILE_CLASS,
facadeName.fqNameForTopLevelClassMaybeWithDollars.shortName(),
deserializedSource,
deserializeIr = { facade -> deserializeClass(facade, stubGenerator, facade.parent) }
).also {
it.createThisReceiverParameter()
it.classNameOverride = facadeName
}
}

override fun deserializeClass(
irClass: IrClass,
stubGenerator: DeclarationStubGenerator,
parent: IrDeclarationParent,
): Boolean = JvmIrDeserializerImpl().deserializeTopLevelClass(
irClass, stubGenerator.irBuiltIns, stubGenerator.symbolTable, listOf(stubGenerator), this
)

override fun isPropertyWithPlatformField(descriptor: PropertyDescriptor): Boolean =
descriptor.hasJvmFieldAnnotation()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ class JvmIrCodegenFactory(
val evaluatorData = ideCodegenSettings.evaluatorData ?: computePsiBasedEvaluatorData(irModuleFragment)
val context = JvmBackendContext(
state, irBuiltIns, symbolTable, extensions,
backendExtension, JvmIrDeserializerImpl(), irProviders, irPluginContext, evaluatorData
backendExtension, irPluginContext, evaluatorData
)
val generationExtensions = state.configuration.filteredExtensions
.mapNotNull { it.getPlatformIntrinsicExtension(context) as? JvmIrIntrinsicExtension }
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -55,19 +55,12 @@ internal class ExternalPackageParentPatcherLowering(val context: JvmBackendConte
if (deserializedSource.facadeClassName != null) IrDeclarationOrigin.JVM_MULTIFILE_CLASS else IrDeclarationOrigin.FILE_CLASS,
facadeName.fqNameForTopLevelClassMaybeWithDollars.shortName(),
deserializedSource,
deserializeIr = { irClass -> deserializeTopLevelClass(irClass) }
).also {
it.createThisReceiverParameter()
it.classNameOverride = facadeName
}
}

private fun deserializeTopLevelClass(irClass: IrClass): Boolean {
return context.irDeserializer.deserializeTopLevelClass(
irClass, context.irBuiltIns, context.symbolTable, context.irProviders, context.generatorExtensions
)
}

private fun handleProperty(property: IrProperty, newParent: IrClass) {
property.parent = newParent
property.getter?.parent = newParent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import org.jetbrains.kotlin.codegen.state.JvmBackendConfig
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.IrProvider
import org.jetbrains.kotlin.ir.KtDiagnosticReporterWithImplicitIrBasedContext
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.*
Expand All @@ -46,8 +45,6 @@ class JvmBackendContext(
val symbolTable: SymbolTable,
val generatorExtensions: JvmGeneratorExtensions,
val backendExtension: JvmBackendExtension,
val irDeserializer: JvmIrDeserializer,
val irProviders: List<IrProvider>,
val irPluginContext: IrPluginContext?,
val evaluatorData: JvmEvaluatorData?
) : CommonBackendContext {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,16 @@
package org.jetbrains.kotlin.backend.jvm

import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.ir.IrImplementationDetail
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.impl.IrClassImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.symbols.impl.IrClassSymbolImpl
import org.jetbrains.kotlin.ir.util.deserializedIr
import org.jetbrains.kotlin.name.Name

fun createJvmFileFacadeClass(
origin: IrDeclarationOrigin,
name: Name,
source: SourceElement,
deserializeIr: (IrClass) -> Boolean,
) = IrFactoryImpl.createClass(
startOffset = UNDEFINED_OFFSET,
endOffset = UNDEFINED_OFFSET,
Expand All @@ -31,6 +26,4 @@ fun createJvmFileFacadeClass(
visibility = DescriptorVisibilities.PUBLIC,
modality = Modality.FINAL,
source = source,
).apply {
this.deserializedIr = lazy { deserializeIr(this) }
}
)

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,6 @@ class IrLazyClass(
) : IrClass(), IrLazyClassBase, Psi2IrLazyDeclarationBase {
init {
symbol.bind(this)
this.deserializedIr = lazy {
assert(parent is IrPackageFragment)
stubGenerator.extensions.deserializeClass(this, stubGenerator, parent)
}
}

override var annotations: List<IrAnnotation> by createLazyAnnotations()
Expand Down
Loading