JS: simplify package metadata cache invalidation
This commit is contained in:
@@ -54,7 +54,6 @@ open class IncrementalJsCache(
|
|||||||
private val packageMetadata = registerMap(PackageMetadataMap(PACKAGE_META_FILE.storageFile))
|
private val packageMetadata = registerMap(PackageMetadataMap(PACKAGE_META_FILE.storageFile))
|
||||||
|
|
||||||
private val dirtySources = hashSetOf<File>()
|
private val dirtySources = hashSetOf<File>()
|
||||||
private val dirtyPackages = hashSetOf<String>()
|
|
||||||
|
|
||||||
private val headerFile: File
|
private val headerFile: File
|
||||||
get() = File(cachesDir, HEADER_FILE_NAME)
|
get() = File(cachesDir, HEADER_FILE_NAME)
|
||||||
@@ -68,8 +67,9 @@ open class IncrementalJsCache(
|
|||||||
|
|
||||||
override fun markDirty(removedAndCompiledSources: Collection<File>) {
|
override fun markDirty(removedAndCompiledSources: Collection<File>) {
|
||||||
removedAndCompiledSources.forEach { sourceFile ->
|
removedAndCompiledSources.forEach { sourceFile ->
|
||||||
sourceToClassesMap[sourceFile].forEach {
|
// The common prefix of all FQN parents has to be the file package
|
||||||
dirtyPackages += it.parentOrNull()?.asString() ?: ""
|
sourceToClassesMap[sourceFile].map { it.parentOrNull()?.asString() ?: "" }.minBy { it.length }?.let {
|
||||||
|
packageMetadata.remove(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
super.markDirty(removedAndCompiledSources)
|
super.markDirty(removedAndCompiledSources)
|
||||||
@@ -107,7 +107,6 @@ open class IncrementalJsCache(
|
|||||||
|
|
||||||
for ((packageName, metadata) in incrementalResults.packageMetadata) {
|
for ((packageName, metadata) in incrementalResults.packageMetadata) {
|
||||||
packageMetadata.put(packageName, metadata)
|
packageMetadata.put(packageName, metadata)
|
||||||
dirtyPackages.remove(packageName)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,12 +121,8 @@ open class IncrementalJsCache(
|
|||||||
inlineFunctions.remove(it)
|
inlineFunctions.remove(it)
|
||||||
}
|
}
|
||||||
removeAllFromClassStorage(dirtyOutputClassesMap.getDirtyOutputClasses(), changesCollector)
|
removeAllFromClassStorage(dirtyOutputClassesMap.getDirtyOutputClasses(), changesCollector)
|
||||||
dirtyPackages.forEach {
|
|
||||||
packageMetadata.remove(it)
|
|
||||||
}
|
|
||||||
dirtySources.clear()
|
dirtySources.clear()
|
||||||
dirtyOutputClassesMap.clean()
|
dirtyOutputClassesMap.clean()
|
||||||
dirtyPackages.clear()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun nonDirtyPackageParts(): Map<File, TranslationResultValue> =
|
fun nonDirtyPackageParts(): Map<File, TranslationResultValue> =
|
||||||
@@ -142,9 +137,7 @@ open class IncrementalJsCache(
|
|||||||
|
|
||||||
fun packageMetadata(): Map<String, ByteArray> = hashMapOf<String, ByteArray>().apply {
|
fun packageMetadata(): Map<String, ByteArray> = hashMapOf<String, ByteArray>().apply {
|
||||||
for (fqNameString in packageMetadata.keys()) {
|
for (fqNameString in packageMetadata.keys()) {
|
||||||
if (fqNameString !in dirtyPackages) {
|
put(fqNameString, packageMetadata[fqNameString]!!)
|
||||||
put(fqNameString, packageMetadata[fqNameString]!!)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user