From c8694b90b3558d47665fb9a2e6f3fb6907ea58c4 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Wed, 6 May 2020 11:38:29 +0300 Subject: [PATCH] [IR] Corresponding Fix K/N for plugin api changes (cherry picked from commit 17206bf464b987c1d1f2763477076de72889822e) --- .../kotlin/backend/konan/ToplevelPhases.kt | 34 +++++++++++-------- .../jetbrains/kotlin/backend/konan/ir/Ir.kt | 4 ++- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt index 6c2e18a72a2..c0f17131b98 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt @@ -23,12 +23,14 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib +import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.ir.visitors.acceptVoid import org.jetbrains.kotlin.konan.target.CompilerOutputKind +import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator import org.jetbrains.kotlin.utils.DFS @@ -147,20 +149,6 @@ internal val psiToIrPhase = konanUnitPhase( val pluginExtensions = IrGenerationExtension.getInstances(config.project) - translator.addPostprocessingStep { module -> - val pluginContext = IrPluginContext( - generatorContext.moduleDescriptor, - generatorContext.bindingContext, - generatorContext.languageVersionSettings, - generatorContext.symbolTable, - generatorContext.typeTranslator, - generatorContext.irBuiltIns - ) - pluginExtensions.forEach { extension -> - extension.generate(module, pluginContext) - } - } - val forwardDeclarationsModuleDescriptor = moduleDescriptor.allDependencyModules.firstOrNull { it.isForwardDeclarationModule } val modulesWithoutDCE = moduleDescriptor.allDependencyModules @@ -171,11 +159,12 @@ internal val psiToIrPhase = konanUnitPhase( val exportedDependencies = (getExportedDependencies() + modulesWithoutDCE).distinct() val functionIrClassFactory = BuiltInFictitiousFunctionIrClassFactory( symbolTable, generatorContext.irBuiltIns, reflectionTypes) + generatorContext.irBuiltIns.functionFactory = functionIrClassFactory val stubGenerator = DeclarationStubGenerator( moduleDescriptor, symbolTable, config.configuration.languageVersionSettings ) - val symbols = KonanSymbols(this, symbolTable, symbolTable.lazyWrapper, functionIrClassFactory) + val symbols = KonanSymbols(this, generatorContext.irBuiltIns, symbolTable, symbolTable.lazyWrapper, functionIrClassFactory) val irProviderForCEnumsAndCStructs = IrProviderForCEnumAndCStructStubs(generatorContext, interopBuiltIns, symbols) @@ -191,6 +180,21 @@ internal val psiToIrPhase = konanUnitPhase( exportedDependencies ) + translator.addPostprocessingStep { module -> + val pluginContext = IrPluginContext( + generatorContext.moduleDescriptor, + generatorContext.bindingContext, + generatorContext.languageVersionSettings, + generatorContext.symbolTable, + generatorContext.typeTranslator, + generatorContext.irBuiltIns, + linker = deserializer + ) + pluginExtensions.forEach { extension -> + extension.generate(module, pluginContext) + } + } + var dependenciesCount = 0 while (true) { // context.config.librariesWithDependencies could change at each iteration. diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt index 8989c1f9a41..e1a39ed5d38 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/Ir.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol @@ -42,10 +43,11 @@ internal class KonanIr(context: Context, irModule: IrModuleFragment): Ir(context, symbolTable) { +): Symbols(context, irBuiltIns, symbolTable) { val entryPoint = findMainEntryPoint(context)?.let { symbolTable.referenceSimpleFunction(it) }