Fixup reporting statistics from JVM and JS compilations
diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java
index f4663be..9241b27 100644
--- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java
+++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java
@@ -568,7 +568,7 @@
@NotNull
@Override
- protected CommonCompilerPerformanceManager getDefaultPerformanceManager() {
+ public CommonCompilerPerformanceManager getDefaultPerformanceManager() {
return performanceManager;
}
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 a00b0ad..cadd458 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt
@@ -43,7 +43,7 @@
abstract class CLICompiler<A : CommonCompilerArguments> : CLITool<A>() {
- protected abstract val defaultPerformanceManager: CommonCompilerPerformanceManager
+ abstract val defaultPerformanceManager: CommonCompilerPerformanceManager
protected open fun createPerformanceManager(arguments: A, services: Services): CommonCompilerPerformanceManager =
services[CommonCompilerPerformanceManager::class.java] ?: defaultPerformanceManager
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 86315b9..8aa2a12 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt
@@ -273,8 +273,7 @@
}
- override val defaultPerformanceManager: CommonCompilerPerformanceManager
- get() = error("Unsupported")
+ override val defaultPerformanceManager: CommonCompilerPerformanceManager = K2JVMCompilerPerformanceManager()
override fun createPerformanceManager(arguments: K2JVMCompilerArguments, services: Services): CommonCompilerPerformanceManager {
return if (arguments.profileCompilerCommand != null)
diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt
index e2c5160..0768166 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt
@@ -39,7 +39,7 @@
class K2MetadataCompiler : CLICompiler<K2MetadataCompilerArguments>() {
- override val defaultPerformanceManager = K2MetadataCompilerPerformanceManager()
+ override val defaultPerformanceManager: CommonCompilerPerformanceManager = K2MetadataCompilerPerformanceManager()
override fun createArguments() = K2MetadataCompilerArguments()
diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalCompilerRunner.kt
index d002410..abad89a 100644
--- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalCompilerRunner.kt
+++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalCompilerRunner.kt
@@ -244,9 +244,20 @@
args: Args,
caches: CacheManager,
services: Services,
- messageCollector: MessageCollector
+ messageCollector: MessageCollector,
+ reporter: BuildReporter
): ExitCode
+ fun BuildReporter.reportCompilerPerformance(performanceManager: CommonCompilerPerformanceManager) {
+ val relevantMeasurements = performanceManager.getMeasurementResults().filter {
+ it is CompilerInitializationMeasurement || it is CodeAnalysisMeasurement || it is CodeGenerationMeasurement || it is PerformanceCounterMeasurement
+ }
+
+ report {
+ "Compiler perf stats:\n" + relevantMeasurements.joinToString(separator = "\n") { " ${it.render()}" }
+ }
+ }
+
private fun compileIncrementally(
args: Args,
caches: CacheManager,
@@ -301,7 +312,7 @@
val messageCollectorAdapter = MessageCollectorToOutputItemsCollectorAdapter(bufferingMessageCollector, outputItemsCollector)
exitCode = reporter.measure(buildTimeMode) {
- runCompiler(sourcesToCompile.toSet(), args, caches, services, messageCollectorAdapter)
+ runCompiler(sourcesToCompile.toSet(), args, caches, services, messageCollectorAdapter, reporter)
}
val generatedFiles = outputItemsCollector.outputs.map(SimpleOutputItem::toGeneratedFile)
@@ -319,16 +330,6 @@
reporter.reportCompileIteration(compilationMode is CompilationMode.Incremental, sourcesToCompile, exitCode)
bufferingMessageCollector.flush(originalMessageCollector)
- services[CommonCompilerPerformanceManager::class.java]?.apply {
- val relevantMeasurements = this.getMeasurementResults().filter {
- it is CompilerInitializationMeasurement || it is CodeAnalysisMeasurement || it is CodeGenerationMeasurement
- }
-
- reporter.report {
- "Compiler perf stats:\n" + relevantMeasurements.joinToString(separator = "\n") { " ${it.render()}" }
- }
- }
-
if (exitCode != ExitCode.OK) break
dirtySourcesSinceLastTimeFile.delete()
diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunner.kt
index 4838ee9..aebf75d 100644
--- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunner.kt
+++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunner.kt
@@ -171,15 +171,18 @@
args: K2JSCompilerArguments,
caches: IncrementalJsCachesManager,
services: Services,
- messageCollector: MessageCollector
+ messageCollector: MessageCollector,
+ reporter: BuildReporter
): ExitCode {
val freeArgsBackup = args.freeArgs
+ val compiler = K2JSCompiler()
return try {
args.freeArgs += sourcesToCompile.map { it.absolutePath }
- K2JSCompiler().exec(messageCollector, services, args)
+ compiler.exec(messageCollector, services, args)
} finally {
args.freeArgs = freeArgsBackup
+ reporter.reportCompilerPerformance(compiler.defaultPerformanceManager)
}
}
diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt
index fa06ba5..c621810 100644
--- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt
+++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt
@@ -377,15 +377,19 @@
args: K2JVMCompilerArguments,
caches: IncrementalJvmCachesManager,
services: Services,
- messageCollector: MessageCollector
+ messageCollector: MessageCollector,
+ reporter: BuildReporter
): ExitCode {
val compiler = K2JVMCompiler()
val freeArgsBackup = args.freeArgs.toList()
- args.freeArgs += sourcesToCompile.map { it.absolutePath }
- args.allowNoSourceFiles = true
- val exitCode = compiler.exec(messageCollector, services, args)
- args.freeArgs = freeArgsBackup
- return exitCode
+ try {
+ args.freeArgs += sourcesToCompile.map { it.absolutePath }
+ args.allowNoSourceFiles = true
+ return compiler.exec(messageCollector, services, args)
+ } finally {
+ args.freeArgs = freeArgsBackup
+ reporter.reportCompilerPerformance(compiler.defaultPerformanceManager)
+ }
}
}