[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
|
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 {
|
private inner class CacheUpdaterInternal {
|
||||||
val signatureHashCalculator = IdSignatureHashCalculator()
|
val signatureHashCalculator = IdSignatureHashCalculator()
|
||||||
|
|
||||||
|
|||||||
+49
@@ -101,3 +101,52 @@ abstract class KotlinSourceFileMetadata : KotlinSourceFileExports() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun KotlinSourceFileMetadata.isEmpty() = inverseDependencies.isEmpty() && directDependencies.isEmpty()
|
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