JVM IR: merge JvmBackendFacade into JvmIrCodegenFactory
This commit is contained in:
+21
-2
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen
|
|||||||
import org.jetbrains.kotlin.backend.jvm.codegen.DescriptorMetadataSerializer
|
import org.jetbrains.kotlin.backend.jvm.codegen.DescriptorMetadataSerializer
|
||||||
import org.jetbrains.kotlin.backend.jvm.lower.MultifileFacadeFileEntry
|
import org.jetbrains.kotlin.backend.jvm.lower.MultifileFacadeFileEntry
|
||||||
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
|
||||||
|
import org.jetbrains.kotlin.codegen.CodegenFactory
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
@@ -39,8 +40,8 @@ import org.jetbrains.kotlin.psi2ir.PsiSourceManager
|
|||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.CleanableBindingContext
|
import org.jetbrains.kotlin.resolve.CleanableBindingContext
|
||||||
|
|
||||||
object JvmBackendFacade {
|
class JvmIrCodegenFactory(private val phaseConfig: PhaseConfig) : CodegenFactory {
|
||||||
fun doGenerateFiles(files: Collection<KtFile>, state: GenerationState, phaseConfig: PhaseConfig) {
|
override fun generateModule(state: GenerationState, files: Collection<KtFile>) {
|
||||||
val extensions = JvmGeneratorExtensions()
|
val extensions = JvmGeneratorExtensions()
|
||||||
val mangler = JvmManglerDesc(MainFunctionDetector(state.bindingContext, state.languageVersionSettings))
|
val mangler = JvmManglerDesc(MainFunctionDetector(state.bindingContext, state.languageVersionSettings))
|
||||||
val psi2ir = Psi2IrTranslator(state.languageVersionSettings, Psi2IrConfiguration())
|
val psi2ir = Psi2IrTranslator(state.languageVersionSettings, Psi2IrConfiguration())
|
||||||
@@ -170,4 +171,22 @@ object JvmBackendFacade {
|
|||||||
// and clear `JvmBackendContext.classCodegens`
|
// and clear `JvmBackendContext.classCodegens`
|
||||||
state.afterIndependentPart()
|
state.afterIndependentPart()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun generateModuleInFrontendIRMode(
|
||||||
|
state: GenerationState,
|
||||||
|
irModuleFragment: IrModuleFragment,
|
||||||
|
symbolTable: SymbolTable,
|
||||||
|
sourceManager: PsiSourceManager,
|
||||||
|
serializerFactory: MetadataSerializerFactory,
|
||||||
|
) {
|
||||||
|
irModuleFragment.irBuiltins.functionFactory = IrFunctionFactory(irModuleFragment.irBuiltins, symbolTable)
|
||||||
|
val extensions = JvmGeneratorExtensions()
|
||||||
|
val irProviders = generateTypicalIrProviderList(
|
||||||
|
irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable, extensions = extensions
|
||||||
|
)
|
||||||
|
|
||||||
|
doGenerateFilesInternal(
|
||||||
|
state, irModuleFragment, symbolTable, sourceManager, phaseConfig, irProviders, extensions, serializerFactory
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2016 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.backend.jvm
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
|
||||||
import org.jetbrains.kotlin.codegen.CodegenFactory
|
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
|
||||||
import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory
|
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
|
||||||
import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
import org.jetbrains.kotlin.psi2ir.PsiSourceManager
|
|
||||||
|
|
||||||
class JvmIrCodegenFactory(private val phaseConfig: PhaseConfig) : CodegenFactory {
|
|
||||||
override fun generateModule(state: GenerationState, files: Collection<KtFile>) {
|
|
||||||
JvmBackendFacade.doGenerateFiles(files, state, phaseConfig)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun generateModuleInFrontendIRMode(
|
|
||||||
state: GenerationState,
|
|
||||||
irModuleFragment: IrModuleFragment,
|
|
||||||
symbolTable: SymbolTable,
|
|
||||||
sourceManager: PsiSourceManager,
|
|
||||||
serializerFactory: MetadataSerializerFactory,
|
|
||||||
) {
|
|
||||||
irModuleFragment.irBuiltins.functionFactory = IrFunctionFactory(irModuleFragment.irBuiltins, symbolTable)
|
|
||||||
val extensions = JvmGeneratorExtensions()
|
|
||||||
val irProviders = generateTypicalIrProviderList(
|
|
||||||
irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable, extensions = extensions
|
|
||||||
)
|
|
||||||
|
|
||||||
JvmBackendFacade.doGenerateFilesInternal(
|
|
||||||
state, irModuleFragment, symbolTable, sourceManager, phaseConfig, irProviders, extensions, serializerFactory
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user