From 772745b0ad607ccfd96f4d374dcd284ff46dc396 Mon Sep 17 00:00:00 2001 From: "Aleksei.Cherepanov" Date: Tue, 14 Feb 2023 11:40:17 +0100 Subject: [PATCH] [JPS] Don't compute compiler args on start-up of the build process Initialization of compiler arguments takes a long time because of its copying, but for initial context check, there is no need to do it at all for all targets except Common. #KTIJ-21161 In Progress --- .../src/org/jetbrains/kotlin/jps/build/KotlinChunk.kt | 2 +- .../kotlin/jps/targets/KotlinCommonModuleBuildTarget.kt | 4 ++-- .../jetbrains/kotlin/jps/targets/KotlinModuleBuildTarget.kt | 2 +- .../kotlin/jps/targets/KotlinUnsupportedModuleBuildTarget.kt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinChunk.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinChunk.kt index ff5d8c680e7..a471f4ef4c7 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinChunk.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinChunk.kt @@ -135,7 +135,7 @@ class KotlinChunk internal constructor(val context: KotlinCompileContext, val ta } val isEnabled: Boolean by lazy { - representativeTarget.isEnabled(compilerArguments) + representativeTarget.isEnabled(lazy { compilerArguments }) } fun shouldRebuild(): Boolean { diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinCommonModuleBuildTarget.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinCommonModuleBuildTarget.kt index ee2de736f19..fb6a9046ed2 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinCommonModuleBuildTarget.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinCommonModuleBuildTarget.kt @@ -26,9 +26,9 @@ private const val COMMON_BUILD_META_INFO_FILE_NAME = "common-build-meta-info.txt class KotlinCommonModuleBuildTarget(kotlinContext: KotlinCompileContext, jpsModuleBuildTarget: ModuleBuildTarget) : KotlinModuleBuildTarget(kotlinContext, jpsModuleBuildTarget) { - override fun isEnabled(chunkCompilerArguments: CommonCompilerArguments): Boolean { + override fun isEnabled(chunkCompilerArguments: Lazy): Boolean { val k2MetadataArguments = module.k2MetadataCompilerArguments - return k2MetadataArguments.enabledInJps || (chunkCompilerArguments as? K2MetadataCompilerArguments)?.enabledInJps == true + return k2MetadataArguments.enabledInJps || (chunkCompilerArguments.value as? K2MetadataCompilerArguments)?.enabledInJps == true } override val isIncrementalCompilationEnabled: Boolean diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinModuleBuildTarget.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinModuleBuildTarget.kt index 10d9b0067aa..0a16ab14f47 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinModuleBuildTarget.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinModuleBuildTarget.kt @@ -65,7 +65,7 @@ abstract class KotlinModuleBuildTarget intern abstract val isIncrementalCompilationEnabled: Boolean - open fun isEnabled(chunkCompilerArguments: CommonCompilerArguments): Boolean = true + open fun isEnabled(chunkCompilerArguments: Lazy): Boolean = true @Suppress("LeakingThis") val localCacheVersionManager = localCacheVersionManager( diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinUnsupportedModuleBuildTarget.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinUnsupportedModuleBuildTarget.kt index 99df21cfce7..98533f2c664 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinUnsupportedModuleBuildTarget.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinUnsupportedModuleBuildTarget.kt @@ -24,7 +24,7 @@ class KotlinUnsupportedModuleBuildTarget( private fun shouldNotBeCalled(): Nothing = error("Should not be called") - override fun isEnabled(chunkCompilerArguments: CommonCompilerArguments): Boolean { + override fun isEnabled(chunkCompilerArguments: Lazy): Boolean { return false }