[JS IR] Minor IC refactoring
Move metadata classes from cache updater to separate file.
This commit is contained in:
committed by
Space Team
parent
0f4e4ac20e
commit
c7589245c4
@@ -111,55 +111,6 @@ class CacheUpdater(
|
||||
return result
|
||||
}
|
||||
|
||||
private class DirtyFileExports(
|
||||
override val inverseDependencies: KotlinSourceFileMutableMap<Set<IdSignature>> = KotlinSourceFileMutableMap()
|
||||
) : KotlinSourceFileExports() {
|
||||
override fun getExportedSignatures(): Set<IdSignature> = allExportedSignatures
|
||||
|
||||
val allExportedSignatures = hashSetOf<IdSignature>()
|
||||
}
|
||||
|
||||
private class DirtyFileMetadata(
|
||||
val maybeImportedSignatures: Collection<IdSignature>,
|
||||
|
||||
val oldDirectDependencies: KotlinSourceFileMap<*>,
|
||||
|
||||
override val inverseDependencies: KotlinSourceFileMutableMap<MutableSet<IdSignature>> = KotlinSourceFileMutableMap(),
|
||||
override val directDependencies: KotlinSourceFileMutableMap<MutableMap<IdSignature, ICHash>> = KotlinSourceFileMutableMap(),
|
||||
) : KotlinSourceFileMetadata() {
|
||||
fun addInverseDependency(lib: KotlinLibraryFile, src: KotlinSourceFile, signature: IdSignature) =
|
||||
when (val signatures = inverseDependencies[lib, src]) {
|
||||
null -> inverseDependencies[lib, src] = hashSetOf(signature)
|
||||
else -> signatures += signature
|
||||
}
|
||||
|
||||
fun addDirectDependency(lib: KotlinLibraryFile, src: KotlinSourceFile, signature: IdSignature, hash: ICHash) =
|
||||
when (val signatures = directDependencies[lib, src]) {
|
||||
null -> directDependencies[lib, src] = hashMapOf(signature to hash)
|
||||
else -> signatures[signature] = hash
|
||||
}
|
||||
}
|
||||
|
||||
private class UpdatedDependenciesMetadata(oldMetadata: KotlinSourceFileMetadata) : KotlinSourceFileMetadata() {
|
||||
private val oldInverseDependencies = oldMetadata.inverseDependencies
|
||||
private val newExportedSignatures: Set<IdSignature> by lazy { inverseDependencies.flatSignatures() }
|
||||
|
||||
var importedSignaturesModified = false
|
||||
|
||||
override val inverseDependencies = oldMetadata.inverseDependencies.toMutable()
|
||||
override val directDependencies = oldMetadata.directDependencies.toMutable()
|
||||
|
||||
override fun getExportedSignatures(): Set<IdSignature> = newExportedSignatures
|
||||
|
||||
fun isExportedSignaturesUpdated() = newExportedSignatures != oldInverseDependencies.flatSignatures()
|
||||
}
|
||||
|
||||
private fun KotlinSourceFileMutableMap<UpdatedDependenciesMetadata>.addNewMetadata(
|
||||
libFile: KotlinLibraryFile, srcFile: KotlinSourceFile, oldMetadata: KotlinSourceFileMetadata
|
||||
) = this[libFile, srcFile] ?: UpdatedDependenciesMetadata(oldMetadata).also {
|
||||
this[libFile, srcFile] = it
|
||||
}
|
||||
|
||||
private inner class CacheUpdaterInternal {
|
||||
val signatureHashCalculator = IdSignatureHashCalculator()
|
||||
|
||||
|
||||
+49
@@ -101,3 +101,52 @@ abstract class KotlinSourceFileMetadata : KotlinSourceFileExports() {
|
||||
}
|
||||
|
||||
fun KotlinSourceFileMetadata.isEmpty() = inverseDependencies.isEmpty() && directDependencies.isEmpty()
|
||||
|
||||
internal class DirtyFileExports(
|
||||
override val inverseDependencies: KotlinSourceFileMutableMap<Set<IdSignature>> = KotlinSourceFileMutableMap()
|
||||
) : KotlinSourceFileExports() {
|
||||
override fun getExportedSignatures(): Set<IdSignature> = allExportedSignatures
|
||||
|
||||
val allExportedSignatures = hashSetOf<IdSignature>()
|
||||
}
|
||||
|
||||
internal class DirtyFileMetadata(
|
||||
val maybeImportedSignatures: Collection<IdSignature>,
|
||||
|
||||
val oldDirectDependencies: KotlinSourceFileMap<*>,
|
||||
|
||||
override val inverseDependencies: KotlinSourceFileMutableMap<MutableSet<IdSignature>> = KotlinSourceFileMutableMap(),
|
||||
override val directDependencies: KotlinSourceFileMutableMap<MutableMap<IdSignature, ICHash>> = KotlinSourceFileMutableMap(),
|
||||
) : KotlinSourceFileMetadata() {
|
||||
fun addInverseDependency(lib: KotlinLibraryFile, src: KotlinSourceFile, signature: IdSignature) =
|
||||
when (val signatures = inverseDependencies[lib, src]) {
|
||||
null -> inverseDependencies[lib, src] = hashSetOf(signature)
|
||||
else -> signatures += signature
|
||||
}
|
||||
|
||||
fun addDirectDependency(lib: KotlinLibraryFile, src: KotlinSourceFile, signature: IdSignature, hash: ICHash) =
|
||||
when (val signatures = directDependencies[lib, src]) {
|
||||
null -> directDependencies[lib, src] = hashMapOf(signature to hash)
|
||||
else -> signatures[signature] = hash
|
||||
}
|
||||
}
|
||||
|
||||
internal class UpdatedDependenciesMetadata(oldMetadata: KotlinSourceFileMetadata) : KotlinSourceFileMetadata() {
|
||||
private val oldInverseDependencies = oldMetadata.inverseDependencies
|
||||
private val newExportedSignatures: Set<IdSignature> by lazy { inverseDependencies.flatSignatures() }
|
||||
|
||||
var importedSignaturesModified = false
|
||||
|
||||
override val inverseDependencies = oldMetadata.inverseDependencies.toMutable()
|
||||
override val directDependencies = oldMetadata.directDependencies.toMutable()
|
||||
|
||||
override fun getExportedSignatures(): Set<IdSignature> = newExportedSignatures
|
||||
|
||||
fun isExportedSignaturesUpdated() = newExportedSignatures != oldInverseDependencies.flatSignatures()
|
||||
}
|
||||
|
||||
internal fun KotlinSourceFileMutableMap<UpdatedDependenciesMetadata>.addNewMetadata(
|
||||
libFile: KotlinLibraryFile, srcFile: KotlinSourceFile, oldMetadata: KotlinSourceFileMetadata
|
||||
) = this[libFile, srcFile] ?: UpdatedDependenciesMetadata(oldMetadata).also {
|
||||
this[libFile, srcFile] = it
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user