summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Uskov <Andrey.Uskov@jetbrains.com>2020-06-30 00:09:24 +0300
committernataliya.valtman <nataliya.valtman@jetbrains.com>2020-07-14 16:41:03 +0300
commit6d0c3d4dcd5bffab440c098172882a00fe1c7460 (patch)
tree898b849d9de222c010ecb0648d90178c4327f627
parent1f4b9d894e275564114e8c206bdb40d751cefe9b (diff)
downloadkotlin-6d0c3d4dcd5bffab440c098172882a00fe1c7460.tar.gz
Report use-ir flag from Gradle
#KT-39924 Fixed (cherry picked from commit e3a5df1aaae4bb8433df13b882aa08a0becc3557)
-rw-r--r--libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt15
-rw-r--r--libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt17
-rw-r--r--libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt1
-rw-r--r--libraries/tools/kotlin-gradle-statistics/src/org/jetbrains/kotlin/statistics/metrics/NumericalMetrics.kt1
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