Avoid computing source files changes in IC for Gradle
This commit is contained in:
@@ -453,8 +453,8 @@ class CompileServiceImpl(
|
||||
workingDir,
|
||||
enabled = true)
|
||||
|
||||
return IncrementalJsCompilerRunner(workingDir, versions, reporter)
|
||||
.compile(allKotlinFiles, args, compilerMessageCollector, { changedFiles })
|
||||
val compiler = IncrementalJsCompilerRunner(workingDir, versions, reporter)
|
||||
return compiler.compile(allKotlinFiles, args, compilerMessageCollector, changedFiles)
|
||||
}
|
||||
|
||||
private fun execIncrementalCompiler(
|
||||
@@ -514,7 +514,7 @@ class CompileServiceImpl(
|
||||
friendBuildHistoryFile = incrementalCompilationOptions.friendDifferenceFile,
|
||||
usePreciseJavaTracking = incrementalCompilationOptions.usePreciseJavaTracking
|
||||
)
|
||||
return compiler.compile(allKotlinFiles, k2jvmArgs, compilerMessageCollector, { changedFiles })
|
||||
return compiler.compile(allKotlinFiles, k2jvmArgs, compilerMessageCollector, changedFiles)
|
||||
}
|
||||
|
||||
override fun leaseReplSession(
|
||||
|
||||
+11
-7
@@ -54,10 +54,12 @@ abstract class IncrementalCompilerRunner<
|
||||
protected abstract fun destinationDir(args: Args): File
|
||||
|
||||
fun compile(
|
||||
allKotlinSources: List<File>,
|
||||
allSourceFiles: List<File>,
|
||||
args: Args,
|
||||
messageCollector: MessageCollector,
|
||||
getChangedFiles: (CacheManager)-> ChangedFiles
|
||||
// when [providedChangedFiles] is not null, changes are provided by external system (e.g. Gradle)
|
||||
// otherwise we track source files changes ourselves.
|
||||
providedChangedFiles: ChangedFiles?
|
||||
): ExitCode {
|
||||
assert(isICEnabled()) { "Incremental compilation is not enabled" }
|
||||
var caches = createCacheManager(args)
|
||||
@@ -70,18 +72,20 @@ abstract class IncrementalCompilerRunner<
|
||||
destinationDir(args).deleteRecursively()
|
||||
|
||||
caches = createCacheManager(args)
|
||||
// todo more optimal fix
|
||||
caches.inputsCache.sourceSnapshotMap.compareAndUpdate(allKotlinSources)
|
||||
return compileIncrementally(args, caches, allKotlinSources, CompilationMode.Rebuild(), messageCollector)
|
||||
if (providedChangedFiles == null) {
|
||||
caches.inputsCache.sourceSnapshotMap.compareAndUpdate(allSourceFiles)
|
||||
}
|
||||
val allKotlinFiles = allSourceFiles.filter { it.isKotlinFile() }
|
||||
return compileIncrementally(args, caches, allKotlinFiles, CompilationMode.Rebuild(), messageCollector)
|
||||
}
|
||||
|
||||
return try {
|
||||
val changedFiles = getChangedFiles(caches)
|
||||
val changedFiles = providedChangedFiles ?: caches.inputsCache.sourceSnapshotMap.compareAndUpdate(allSourceFiles)
|
||||
val compilationMode = sourcesToCompile(caches, changedFiles, args)
|
||||
|
||||
val exitCode = when (compilationMode) {
|
||||
is CompilationMode.Incremental -> {
|
||||
compileIncrementally(args, caches, allKotlinSources, compilationMode, messageCollector)
|
||||
compileIncrementally(args, caches, allSourceFiles, compilationMode, messageCollector)
|
||||
}
|
||||
is CompilationMode.Rebuild -> {
|
||||
rebuild { "Non-incremental compilation will be performed: ${compilationMode.reason}" }
|
||||
|
||||
+1
-3
@@ -41,9 +41,7 @@ fun makeJsIncrementally(
|
||||
|
||||
withJsIC {
|
||||
val compiler = IncrementalJsCompilerRunner(cachesDir, versions, reporter)
|
||||
compiler.compile(allKotlinFiles, args, messageCollector) {
|
||||
it.inputsCache.sourceSnapshotMap.compareAndUpdate(allKotlinFiles)
|
||||
}
|
||||
compiler.compile(allKotlinFiles, args, messageCollector, providedChangedFiles = null)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-4
@@ -63,7 +63,6 @@ fun makeIncrementally(
|
||||
val rootsWalk = sourceRoots.asSequence().flatMap { it.walk() }
|
||||
val files = rootsWalk.filter(File::isFile)
|
||||
val sourceFiles = files.filter { it.extension.toLowerCase() in allExtensions }.toList()
|
||||
val kotlinFiles = sourceFiles.filter { it.extension.toLowerCase() in kotlinExtensions }
|
||||
|
||||
withIC {
|
||||
val compiler = IncrementalJvmCompilerRunner(
|
||||
@@ -73,9 +72,7 @@ fun makeIncrementally(
|
||||
// Use precise setting in case of non-Gradle build
|
||||
usePreciseJavaTracking = true
|
||||
)
|
||||
compiler.compile(kotlinFiles, args, messageCollector) {
|
||||
it.inputsCache.sourceSnapshotMap.compareAndUpdate(sourceFiles)
|
||||
}
|
||||
compiler.compile(sourceFiles, args, messageCollector, providedChangedFiles = null)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user