diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt index 6a8044e8cbc..572f8681787 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt @@ -45,7 +45,7 @@ abstract class CLICompiler : CLITool() { protected abstract val performanceManager: CommonCompilerPerformanceManager - protected open fun createPerformanceManager(arguments: A): CommonCompilerPerformanceManager = performanceManager + protected open fun createPerformanceManager(arguments: A, services: Services): CommonCompilerPerformanceManager = performanceManager // Used in CompilerRunnerUtil#invokeExecMethod, in Eclipse plugin (KotlinCLICompiler) and in kotlin-gradle-plugin (GradleCompilerRunner) fun execAndOutputXml(errStream: PrintStream, services: Services, vararg args: String): ExitCode { @@ -58,7 +58,7 @@ abstract class CLICompiler : CLITool() { } public override fun execImpl(messageCollector: MessageCollector, services: Services, arguments: A): ExitCode { - val performanceManager = createPerformanceManager(arguments) + val performanceManager = createPerformanceManager(arguments, services) if (arguments.reportPerf || arguments.dumpPerf != null) { performanceManager.enableCollectingPerformanceStatistics() } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt index 4c96da28fd8..81a080beefd 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt @@ -267,7 +267,9 @@ class K2JVMCompiler : CLICompiler() { override val performanceManager: CommonCompilerPerformanceManager get() = error("Unsupported") - override fun createPerformanceManager(arguments: K2JVMCompilerArguments): CommonCompilerPerformanceManager { + override fun createPerformanceManager(arguments: K2JVMCompilerArguments, services: Services): CommonCompilerPerformanceManager { + val externalManager = services[CommonCompilerPerformanceManager::class.java] + if (externalManager != null) return externalManager val argument = arguments.profileCompilerCommand ?: return K2JVMCompilerPerformanceManager() return ProfilingCompilerPerformanceManager.create(argument) }