Introduce IncrementalCompilerRunner#markDirty
This commit is contained in:
@@ -28,7 +28,7 @@ import java.io.File
|
|||||||
/**
|
/**
|
||||||
* Incremental cache common for JVM and JS
|
* Incremental cache common for JVM and JS
|
||||||
*/
|
*/
|
||||||
open class IncrementalCacheCommon(workingDir: File) : BasicMapsOwner(workingDir) {
|
abstract class IncrementalCacheCommon(workingDir: File) : BasicMapsOwner(workingDir) {
|
||||||
companion object {
|
companion object {
|
||||||
private val SUBTYPES = "subtypes"
|
private val SUBTYPES = "subtypes"
|
||||||
private val SUPERTYPES = "supertypes"
|
private val SUPERTYPES = "supertypes"
|
||||||
@@ -55,6 +55,8 @@ open class IncrementalCacheCommon(workingDir: File) : BasicMapsOwner(workingDir)
|
|||||||
fun getSourceFileIfClass(fqName: FqName): File? =
|
fun getSourceFileIfClass(fqName: FqName): File? =
|
||||||
classFqNameToSourceMap[fqName]
|
classFqNameToSourceMap[fqName]
|
||||||
|
|
||||||
|
abstract fun markDirty(removedAndCompiledSources: List<File>)
|
||||||
|
|
||||||
protected fun addToClassStorage(proto: ProtoBuf.Class, nameResolver: NameResolver, srcFile: File) {
|
protected fun addToClassStorage(proto: ProtoBuf.Class, nameResolver: NameResolver, srcFile: File) {
|
||||||
val supertypes = proto.supertypes(TypeTable(proto.typeTable))
|
val supertypes = proto.supertypes(TypeTable(proto.typeTable))
|
||||||
val parents = supertypes.map { nameResolver.getClassId(it.className).asSingleFqName() }
|
val parents = supertypes.map { nameResolver.getClassId(it.className).asSingleFqName() }
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ open class IncrementalCacheImpl(
|
|||||||
|
|
||||||
protected open fun debugLog(message: String) {}
|
protected open fun debugLog(message: String) {}
|
||||||
|
|
||||||
fun markOutputClassesDirty(removedAndCompiledSources: List<File>) {
|
override fun markDirty(removedAndCompiledSources: List<File>) {
|
||||||
for (sourceFile in removedAndCompiledSources) {
|
for (sourceFile in removedAndCompiledSources) {
|
||||||
val classes = sourceToClassesMap[sourceFile]
|
val classes = sourceToClassesMap[sourceFile]
|
||||||
classes.forEach {
|
classes.forEach {
|
||||||
|
|||||||
+3
-2
@@ -131,7 +131,8 @@ abstract class IncrementalCompilerRunner<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected open fun markOutputDirty(caches: CacheManager, dirtySources: List<File>) {
|
protected open fun markDirty(caches: CacheManager, dirtySources: List<File>) {
|
||||||
|
caches.platformCache.markDirty(dirtySources)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun compareAndUpdateCache(caches: CacheManager, generatedFiles: List<GeneratedFile>): CompilationResult
|
protected abstract fun compareAndUpdateCache(caches: CacheManager, generatedFiles: List<GeneratedFile>): CompilationResult
|
||||||
@@ -175,7 +176,7 @@ abstract class IncrementalCompilerRunner<
|
|||||||
val allGeneratedFiles = hashSetOf<GeneratedFile>()
|
val allGeneratedFiles = hashSetOf<GeneratedFile>()
|
||||||
|
|
||||||
while (dirtySources.any()) {
|
while (dirtySources.any()) {
|
||||||
markOutputDirty(caches, dirtySources)
|
caches.platformCache.markDirty(dirtySources)
|
||||||
caches.inputsCache.removeOutputForSourceFiles(dirtySources)
|
caches.inputsCache.removeOutputForSourceFiles(dirtySources)
|
||||||
|
|
||||||
val lookupTracker = LookupTrackerImpl(LookupTracker.DO_NOTHING)
|
val lookupTracker = LookupTrackerImpl(LookupTracker.DO_NOTHING)
|
||||||
|
|||||||
+2
-3
@@ -196,10 +196,9 @@ class IncrementalJvmCompilerRunner(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private var outdatedClasses: Iterable<JvmClassName> = emptyList()
|
private var outdatedClasses: Iterable<JvmClassName> = emptyList()
|
||||||
override fun markOutputDirty(caches: IncrementalJvmCachesManager, dirtySources: List<File>) {
|
override fun markDirty(caches: IncrementalJvmCachesManager, dirtySources: List<File>) {
|
||||||
outdatedClasses = caches.platformCache.classesBySources(dirtySources)
|
outdatedClasses = caches.platformCache.classesBySources(dirtySources)
|
||||||
caches.platformCache.markOutputClassesDirty(dirtySources)
|
super.markDirty(caches, dirtySources)
|
||||||
super.markOutputDirty(caches, dirtySources)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun postCompilationHook(exitCode: ExitCode) {
|
override fun postCompilationHook(exitCode: ExitCode) {
|
||||||
|
|||||||
Reference in New Issue
Block a user