JVM IR, FIR: add JvmBackendExtension instead of MetadataSerializerFactory

This might be a better place for future behavior that should be
abstracted between FE 1.0 and FIR, in JVM IR.
This commit is contained in:
Alexander Udalov
2020-12-01 19:04:25 +01:00
parent a5ddb1fdf1
commit 7d37030095
12 changed files with 85 additions and 37 deletions
@@ -6,8 +6,8 @@
package org.jetbrains.kotlin.test.backend.ir
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.jvm.JvmBackendExtension
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
import org.jetbrains.kotlin.backend.jvm.MetadataSerializerFactory
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.linkage.IrProvider
@@ -25,7 +25,7 @@ data class IrBackendInput(
val phaseConfig: PhaseConfig,
val irProviders: List<IrProvider>,
val extensions: JvmGeneratorExtensions,
val serializerFactory: MetadataSerializerFactory
val backendExtension: JvmBackendExtension,
) : ResultingArtifact.BackendInput<IrBackendInput>() {
override val kind: BackendKinds.IrBackend
get() = BackendKinds.IrBackend
@@ -16,7 +16,7 @@ class JvmIrBackendFacade(
module: TestModule,
inputArtifact: IrBackendInput
): BinaryArtifacts.Jvm {
val (state, irModuleFragment, symbolTable, sourceManager, phaseConfig, irProviders, extensions, serializerFactory) = inputArtifact
val (state, irModuleFragment, symbolTable, sourceManager, phaseConfig, irProviders, extensions, backendExtension) = inputArtifact
val codegenFactory = state.codegenFactory as JvmIrCodegenFactory
codegenFactory.doGenerateFilesInternal(
@@ -27,7 +27,7 @@ class JvmIrBackendFacade(
phaseConfig,
irProviders,
extensions,
serializerFactory
backendExtension,
)
state.factory.done()
@@ -9,11 +9,7 @@ import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
import org.jetbrains.kotlin.backend.common.ir.BuiltinSymbolsBase
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.backend.jvm.JvmNameProvider
import org.jetbrains.kotlin.backend.jvm.codegen.DescriptorMetadataSerializer
import org.jetbrains.kotlin.backend.jvm.jvmPhases
import org.jetbrains.kotlin.backend.jvm.*
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
@@ -152,7 +148,7 @@ class ClassicFrontend2IrConverter(
phaseConfig,
irProviders,
extensions,
::DescriptorMetadataSerializer
JvmBackendExtension.Default,
)
}
}
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.codegen.ClassBuilderFactories
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
import org.jetbrains.kotlin.fir.backend.jvm.FirMetadataSerializer
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory
import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
@@ -89,8 +89,7 @@ class Fir2IrResultsConverter(
phaseConfig,
irProviders,
extensions,
) { context, irClass, _, serializationBindings, parent ->
FirMetadataSerializer(inputArtifact.session, context, irClass, serializationBindings, components, parent)
}
FirJvmBackendExtension(inputArtifact.session, components)
)
}
}