From 22cd20781ee15fb14c5270a4ec6ba14c24317b54 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Fri, 20 Aug 2021 16:49:10 +0300 Subject: [PATCH] [JS IC] Support per-file invalidation in CLI - now disabled --- .../jetbrains/kotlin/cli/js/K2JsIrCompiler.kt | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index 1c5b77a971b..95f5653cea9 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt @@ -38,6 +38,7 @@ import org.jetbrains.kotlin.incremental.js.IncrementalDataProvider import org.jetbrains.kotlin.incremental.js.IncrementalNextRoundChecker import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumer import org.jetbrains.kotlin.ir.backend.js.* +import org.jetbrains.kotlin.ir.backend.js.ic.actualizeCacheForModule import org.jetbrains.kotlin.ir.backend.js.ic.buildCache import org.jetbrains.kotlin.ir.backend.js.ic.checkCaches import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl @@ -72,6 +73,9 @@ class K2JsIrCompiler : CLICompiler() { return K2JSCompilerArguments() } + @Suppress("UNUSED_PARAMETER") + private fun usePerFileInvalidator(configuration: CompilerConfiguration): Boolean = false + override fun doExecute( arguments: K2JSCompilerArguments, configuration: CompilerConfiguration, @@ -201,8 +205,14 @@ class K2JsIrCompiler : CLICompiler() { MainModule.Klib(includes) } + val perFileCache = usePerFileInvalidator(configuration) + val start = System.currentTimeMillis() - if (buildCache( + + val updated = if (perFileCache) { + actualizeCacheForModule(includes, outputFilePath, configuration, libraries, icCaches) + } else { + buildCache( cachePath = outputFilePath, project = projectJs, mainModule = mainModule, @@ -211,10 +221,13 @@ class K2JsIrCompiler : CLICompiler() { friendDependencies = friendLibraries, icCache = checkCaches(libraries, icCaches, skipLib = mainModule.libPath) ) - ) { - messageCollector.report(INFO, "IC cache building duration: ${System.currentTimeMillis() - start}ms") + } + + val invalidationType = if (perFileCache) "per-file" else "per-module" + if (updated) { + messageCollector.report(INFO, "IC $invalidationType cache building duration: ${System.currentTimeMillis() - start}ms") } else { - messageCollector.report(INFO, "IC cache up-to-date check duration: ${System.currentTimeMillis() - start}ms") + messageCollector.report(INFO, "IC $invalidationType cache up-to-date check duration: ${System.currentTimeMillis() - start}ms") } return OK }