diff options
author | Andrey Uskov <Andrey.Uskov@jetbrains.com> | 2020-06-30 00:09:24 +0300 |
---|---|---|
committer | nataliya.valtman <nataliya.valtman@jetbrains.com> | 2020-07-14 16:41:03 +0300 |
commit | 6d0c3d4dcd5bffab440c098172882a00fe1c7460 (patch) | |
tree | 898b849d9de222c010ecb0648d90178c4327f627 | |
parent | 1f4b9d894e275564114e8c206bdb40d751cefe9b (diff) | |
download | kotlin-6d0c3d4dcd5bffab440c098172882a00fe1c7460.tar.gz |
Report use-ir flag from Gradle
#KT-39924 Fixed
(cherry picked from commit e3a5df1aaae4bb8433df13b882aa08a0becc3557)
4 files changed, 30 insertions, 4 deletions
diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt index b82eb5cd7b4..7554ba60bd0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt @@ -11,10 +11,7 @@ import org.gradle.api.invocation.Gradle import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.tasks.bundling.AbstractArchiveTask import org.gradle.jvm.tasks.Jar -import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments -import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments -import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments -import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments +import org.jetbrains.kotlin.cli.common.arguments.* import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.daemon.client.CompileServiceSession import org.jetbrains.kotlin.daemon.common.CompilerId @@ -26,6 +23,7 @@ import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget import org.jetbrains.kotlin.gradle.plugin.mpp.isMain import org.jetbrains.kotlin.gradle.plugin.mpp.ownModuleName +import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.tasks.KotlinCompileTaskData import org.jetbrains.kotlin.gradle.tasks.locateTask import org.jetbrains.kotlin.gradle.utils.archivePathCompatible @@ -33,6 +31,7 @@ import org.jetbrains.kotlin.gradle.utils.newTmpFile import org.jetbrains.kotlin.gradle.utils.relativeToRoot import org.jetbrains.kotlin.incremental.IncrementalModuleEntry import org.jetbrains.kotlin.incremental.IncrementalModuleInfo +import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics import java.io.File import java.lang.ref.WeakReference @@ -114,6 +113,14 @@ internal open class GradleCompilerRunner(protected val task: Task) { compilerArgs.version = false } val argsArray = ArgumentUtils.convertArgumentsToStringList(compilerArgs).toTypedArray() + KotlinBuildStatsService.applyIfInitialised { + if (compilerArgs is K2JVMCompilerArguments) { + val args = K2JVMCompilerArguments() + parseCommandLineArguments(argsArray.toList(), args) + KotlinBuildStatsService.getInstance()?.report(BooleanMetrics.JVM_COMPILER_IR_MODE, args.useIR) + } + } + val incrementalCompilationEnvironment = environment.incrementalCompilationEnvironment val modulesInfo = incrementalCompilationEnvironment?.let { buildModulesInfo(project.gradle) } val workArgs = GradleKotlinCompilerWorkArguments( diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt index 27d54c8cb4c..8bd3f7dc272 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt @@ -118,6 +118,23 @@ internal abstract class KotlinBuildStatsService internal constructor() : BuildAd } } + /** + * Invokes provided collector if the reporting service is initialised. + * The duration of collector's wall time is reported into overall overhead metric. + */ + fun applyIfInitialised(collector: (IStatisticsValuesConsumer) -> Unit) { + getInstance()?.apply { + try { + val duration = measureTimeMillis { + collector.invoke(this) + } + this.report(NumericalMetrics.STATISTICS_COLLECT_METRICS_OVERHEAD, duration) + } catch (e: Throwable) { + logException("Could collect statistics metrics", e) + } + } + } + @JvmStatic internal fun getLogger() = Logging.getLogger(KotlinBuildStatsService::class.java) diff --git a/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt b/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt index 9b37cbf99cc..5bbecbc6c26 100644 --- a/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt +++ b/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt @@ -36,6 +36,7 @@ enum class BooleanMetrics(val type: BooleanOverridePolicy, val anonymization: Bo KOTLIN_OFFICIAL_CODESTYLE(OVERRIDE, SAFE), KOTLIN_PROGRESSIVE_MODE(OVERRIDE, SAFE), KOTLIN_KTS_USED(OR, SAFE), + JVM_COMPILER_IR_MODE(OR, SAFE), // User scenarios DEBUGGER_ENABLED(OVERRIDE, SAFE), diff --git a/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/NumericalMetrics.kt b/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/NumericalMetrics.kt index a5afa5ab84b..93f3dacb9c0 100644 --- a/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/NumericalMetrics.kt +++ b/libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/NumericalMetrics.kt @@ -48,6 +48,7 @@ enum class NumericalMetrics(val type: NumberOverridePolicy, val anonymization: N NUMBER_OF_SUBPROJECTS(SUM, RANDOM_10_PERCENT), STATISTICS_VISIT_ALL_PROJECTS_OVERHEAD(SUM, RANDOM_10_PERCENT), + STATISTICS_COLLECT_METRICS_OVERHEAD(SUM, RANDOM_10_PERCENT), // User scenarios |