[JS IR] fix IC (KT-49878 fixed)

This commit is contained in:
Anton Bannykh
2021-12-01 16:16:55 +03:00
parent bca9f19c86
commit 038514ed65
@@ -44,6 +44,7 @@ import org.jetbrains.kotlin.ir.backend.js.codegen.JsGenerationGranularity
import org.jetbrains.kotlin.ir.backend.js.ic.* import org.jetbrains.kotlin.ir.backend.js.ic.*
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformerTmp import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformerTmp
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImplForJsIC
import org.jetbrains.kotlin.ir.declarations.persistent.PersistentIrFactory import org.jetbrains.kotlin.ir.declarations.persistent.PersistentIrFactory
import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult
import org.jetbrains.kotlin.js.config.* import org.jetbrains.kotlin.js.config.*
@@ -213,31 +214,24 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
MainModule.Klib(includes) MainModule.Klib(includes)
} }
val perFileCache = usePerFileInvalidator(configurationJs)
val start = System.currentTimeMillis() val start = System.currentTimeMillis()
val updated = if (perFileCache) { val updated = actualizeCacheForModule(
actualizeCacheForModule(includes, outputFilePath, configurationJs, libraries, icCaches, IrFactoryImpl, ::buildCacheForModuleFiles) includes,
} else { outputFilePath,
buildCache( configurationJs,
cachePath = outputFilePath, libraries,
project = projectJs, icCaches,
mainModule = mainModule, IrFactoryImplForJsIC(WholeWorldStageController()),
configuration = config.configuration, ::buildCacheForModuleFiles
dependencies = libraries, )
friendDependencies = friendLibraries,
icCache = checkCaches(libraries, icCaches, skipLib = mainModule.libPath)
)
}
val invalidationType = if (perFileCache) "per-file" else "per-module"
if (updated) { if (updated) {
messageCollector.report(INFO, "IC $invalidationType cache building duration: ${System.currentTimeMillis() - start}ms") messageCollector.report(INFO, "IC per-file cache building duration: ${System.currentTimeMillis() - start}ms")
} else { } else {
messageCollector.report( messageCollector.report(
INFO, INFO,
"IC $invalidationType cache up-to-date check duration: ${System.currentTimeMillis() - start}ms" "IC per-file cache up-to-date check duration: ${System.currentTimeMillis() - start}ms"
) )
} }
return OK return OK
@@ -337,7 +331,7 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
PhaseConfig(wasmPhases), PhaseConfig(wasmPhases),
IrFactoryImpl, IrFactoryImpl,
exportedDeclarations = setOf(FqName("main")), exportedDeclarations = setOf(FqName("main")),
emitNameSection = arguments.wasmDebug, emitNameSection = arguments.wasmDebug,
) )
val outputWasmFile = outputFile.withReplacedExtensionOrNull(outputFile.extension, "wasm")!! val outputWasmFile = outputFile.withReplacedExtensionOrNull(outputFile.extension, "wasm")!!
outputWasmFile.writeBytes(res.wasm) outputWasmFile.writeBytes(res.wasm)