JS: simplify package metadata cache invalidation

This commit is contained in:
Anton Bannykh
2019-05-31 17:45:47 +03:00
parent 8ab9ef2afa
commit e996705b45
@@ -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]!!)
}
} }
} }
} }