From d7e3bb62b341999482ec367880b0d73d211e35ce Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Tue, 19 Mar 2019 12:14:21 +0300 Subject: [PATCH] Update phaser --- .../cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt | 8 ++++---- .../src/org/jetbrains/kotlin/backend/konan/Context.kt | 2 +- .../src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt | 2 ++ .../src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt | 3 ++- .../org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt | 3 ++- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt b/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt index 88e59df6dd1..fa5e8c88f9e 100644 --- a/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt +++ b/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt @@ -9,13 +9,11 @@ import com.intellij.openapi.Disposable import org.jetbrains.annotations.NotNull import org.jetbrains.annotations.Nullable import org.jetbrains.kotlin.backend.konan.* -import org.jetbrains.kotlin.cli.common.CLICompiler -import org.jetbrains.kotlin.cli.common.CLITool -import org.jetbrains.kotlin.cli.common.CommonCompilerPerformanceManager -import org.jetbrains.kotlin.cli.common.ExitCode +import org.jetbrains.kotlin.cli.common.* import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot import org.jetbrains.kotlin.cli.common.config.kotlinSourceRoots import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.* +import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser @@ -57,6 +55,8 @@ class K2Native : CLICompiler() { val environment = KotlinCoreEnvironment.createForProduction(rootDisposable, configuration, EnvironmentConfigFiles.NATIVE_CONFIG_FILES) val project = environment.project + val messageCollector = configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) ?: MessageCollector.NONE + configuration.put(CLIConfigurationKeys.PHASE_CONFIG, createPhaseConfig(toplevelPhase, arguments, messageCollector)) val konanConfig = KonanConfig(project, configuration) val enoughArguments = arguments.freeArgs.isNotEmpty() || arguments.isUsefulWithoutFreeArgs diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt index 60bd740f654..d89ad89e81a 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Context.kt @@ -210,7 +210,7 @@ internal class Context(config: KonanConfig) : KonanBackendContext(config) { override val configuration get() = config.configuration - val phaseConfig = PhaseConfig(toplevelPhase) + val phaseConfig = config.phaseConfig private val packageScope by lazy { builtIns.builtInsModule.getPackage(KonanFqNames.internalPackageName).memberScope } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt index 19f82e9aa95..0df98148c7c 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.konan import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.config.kotlinSourceRoots import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity @@ -33,6 +34,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration internal val platformManager = PlatformManager(distribution) internal val targetManager = platformManager.targetManager(configuration.get(KonanConfigKeys.TARGET)) internal val target = targetManager.target + internal val phaseConfig = configuration.get(CLIConfigurationKeys.PHASE_CONFIG)!! val linkOnly: Boolean = configuration.kotlinSourceRoots.isEmpty() && libraryNames.isNotEmpty() && produce.isNativeBinary diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt index 17f19e0f95b..17cb48c9859 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanDriver.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan +import org.jetbrains.kotlin.backend.common.phaser.CompilerPhase import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment @@ -27,6 +28,6 @@ fun runTopLevelPhases(konanConfig: KonanConfig, environment: KotlinCoreEnvironme if (konanConfig.infoArgsOnly) return - toplevelPhase.invokeToplevel(context.phaseConfig, context, Unit) + (toplevelPhase as CompilerPhase).invokeToplevel(context.phaseConfig, context, Unit) } 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 12305f05881..23c00150d2c 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 @@ -269,7 +269,8 @@ internal val bitcodePhase = namedIrModulePhase( cStubsPhase ) -internal val toplevelPhase = namedUnitPhase( +// Have to hide Context as type parameter in order to expose toplevelPhase outside of this module. +val toplevelPhase: CompilerPhase<*, Unit, Unit> = namedUnitPhase( name = "Compiler", description = "The whole compilation process", lower = frontendPhase then