Use Klib JS serializer protocol for IC
This commit is contained in:
committed by
romanart
parent
6e9cd85b54
commit
d776e92111
+4
-2
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.incremental
|
||||
|
||||
import org.jetbrains.kotlin.incremental.storage.BasicMapsOwner
|
||||
import org.jetbrains.kotlin.incremental.storage.FileToCanonicalPathConverter
|
||||
import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
|
||||
import java.io.File
|
||||
|
||||
private val PATH_CONVERTER = FileToCanonicalPathConverter
|
||||
@@ -75,9 +76,10 @@ class IncrementalJvmCachesManager(
|
||||
|
||||
class IncrementalJsCachesManager(
|
||||
cachesRootDir: File,
|
||||
reporter: ICReporter
|
||||
reporter: ICReporter,
|
||||
serializerProtocol: SerializerExtensionProtocol
|
||||
) : IncrementalCachesManager<IncrementalJsCache>(cachesRootDir, reporter) {
|
||||
|
||||
private val jsCacheFile = File(cachesRootDir, "js").apply { mkdirs() }
|
||||
override val platformCache = IncrementalJsCache(jsCacheFile, PATH_CONVERTER).apply { registerCache() }
|
||||
override val platformCache = IncrementalJsCache(jsCacheFile, PATH_CONVERTER, serializerProtocol).apply { registerCache() }
|
||||
}
|
||||
+31
-22
@@ -28,24 +28,27 @@ import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.incremental.js.*
|
||||
import org.jetbrains.kotlin.incremental.multiproject.EmptyModulesApiHistory
|
||||
import org.jetbrains.kotlin.incremental.multiproject.ModulesApiHistory
|
||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataSerializerProtocol
|
||||
import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol
|
||||
import java.io.File
|
||||
|
||||
fun makeJsIncrementally(
|
||||
cachesDir: File,
|
||||
sourceRoots: Iterable<File>,
|
||||
args: K2JSCompilerArguments,
|
||||
messageCollector: MessageCollector = MessageCollector.NONE,
|
||||
reporter: ICReporter = EmptyICReporter
|
||||
cachesDir: File,
|
||||
sourceRoots: Iterable<File>,
|
||||
args: K2JSCompilerArguments,
|
||||
messageCollector: MessageCollector = MessageCollector.NONE,
|
||||
reporter: ICReporter = EmptyICReporter
|
||||
) {
|
||||
val allKotlinFiles = sourceRoots.asSequence().flatMap { it.walk() }
|
||||
.filter { it.isFile && it.extension.equals("kt", ignoreCase = true) }.toList()
|
||||
.filter { it.isFile && it.extension.equals("kt", ignoreCase = true) }.toList()
|
||||
val buildHistoryFile = File(cachesDir, "build-history.bin")
|
||||
|
||||
withJsIC {
|
||||
val compiler = IncrementalJsCompilerRunner(
|
||||
cachesDir, reporter,
|
||||
buildHistoryFile = buildHistoryFile,
|
||||
modulesApiHistory = EmptyModulesApiHistory)
|
||||
modulesApiHistory = EmptyModulesApiHistory
|
||||
)
|
||||
compiler.compile(allKotlinFiles, args, messageCollector, providedChangedFiles = null)
|
||||
}
|
||||
}
|
||||
@@ -64,24 +67,30 @@ inline fun <R> withJsIC(fn: () -> R): R {
|
||||
class IncrementalJsCompilerRunner(
|
||||
workingDir: File,
|
||||
reporter: ICReporter,
|
||||
buildHistoryFile: File,
|
||||
private val modulesApiHistory: ModulesApiHistory
|
||||
buildHistoryFile: File,
|
||||
private val modulesApiHistory: ModulesApiHistory
|
||||
) : IncrementalCompilerRunner<K2JSCompilerArguments, IncrementalJsCachesManager>(
|
||||
workingDir,
|
||||
"caches-js",
|
||||
reporter,
|
||||
buildHistoryFile = buildHistoryFile
|
||||
buildHistoryFile = buildHistoryFile
|
||||
) {
|
||||
override fun isICEnabled(): Boolean =
|
||||
IncrementalCompilation.isEnabledForJs()
|
||||
|
||||
override fun createCacheManager(args: K2JSCompilerArguments): IncrementalJsCachesManager =
|
||||
IncrementalJsCachesManager(cacheDirectory, reporter)
|
||||
override fun createCacheManager(args: K2JSCompilerArguments): IncrementalJsCachesManager {
|
||||
val serializerProtocol = if (!args.irBackend) JsSerializerProtocol else KlibMetadataSerializerProtocol
|
||||
return IncrementalJsCachesManager(cacheDirectory, reporter, serializerProtocol)
|
||||
}
|
||||
|
||||
override fun destinationDir(args: K2JSCompilerArguments): File =
|
||||
File(args.outputFile).parentFile
|
||||
|
||||
override fun calculateSourcesToCompile(caches: IncrementalJsCachesManager, changedFiles: ChangedFiles.Known, args: K2JSCompilerArguments): CompilationMode {
|
||||
override fun calculateSourcesToCompile(
|
||||
caches: IncrementalJsCachesManager,
|
||||
changedFiles: ChangedFiles.Known,
|
||||
args: K2JSCompilerArguments
|
||||
): CompilationMode {
|
||||
val lastBuildInfo = BuildInfo.read(lastBuildInfoFile)
|
||||
?: return CompilationMode.Rebuild { "No information on previous build" }
|
||||
|
||||
@@ -130,10 +139,10 @@ class IncrementalJsCompilerRunner(
|
||||
}
|
||||
|
||||
override fun updateCaches(
|
||||
services: Services,
|
||||
caches: IncrementalJsCachesManager,
|
||||
generatedFiles: List<GeneratedFile>,
|
||||
changesCollector: ChangesCollector
|
||||
services: Services,
|
||||
caches: IncrementalJsCachesManager,
|
||||
generatedFiles: List<GeneratedFile>,
|
||||
changesCollector: ChangesCollector
|
||||
) {
|
||||
val incrementalResults = services.get(IncrementalResultsConsumer::class.java) as IncrementalResultsConsumerImpl
|
||||
|
||||
@@ -145,11 +154,11 @@ class IncrementalJsCompilerRunner(
|
||||
}
|
||||
|
||||
override fun runCompiler(
|
||||
sourcesToCompile: Set<File>,
|
||||
args: K2JSCompilerArguments,
|
||||
caches: IncrementalJsCachesManager,
|
||||
services: Services,
|
||||
messageCollector: MessageCollector
|
||||
sourcesToCompile: Set<File>,
|
||||
args: K2JSCompilerArguments,
|
||||
caches: IncrementalJsCachesManager,
|
||||
services: Services,
|
||||
messageCollector: MessageCollector
|
||||
): ExitCode {
|
||||
val freeArgsBackup = args.freeArgs
|
||||
|
||||
|
||||
Reference in New Issue
Block a user