From c7589245c4be086b84df7cd3f6cf0bbd4db91dd5 Mon Sep 17 00:00:00 2001 From: Alexander Korepanov Date: Tue, 15 Nov 2022 21:46:30 +0100 Subject: [PATCH] [JS IR] Minor IC refactoring Move metadata classes from cache updater to separate file. --- .../kotlin/ir/backend/js/ic/CacheUpdater.kt | 49 ------------------- .../backend/js/ic/KotlinSourceFileMetadata.kt | 49 +++++++++++++++++++ 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/CacheUpdater.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/CacheUpdater.kt index 6dc2265bf27..3d8f15ed005 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/CacheUpdater.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/CacheUpdater.kt @@ -111,55 +111,6 @@ class CacheUpdater( return result } - private class DirtyFileExports( - override val inverseDependencies: KotlinSourceFileMutableMap> = KotlinSourceFileMutableMap() - ) : KotlinSourceFileExports() { - override fun getExportedSignatures(): Set = allExportedSignatures - - val allExportedSignatures = hashSetOf() - } - - private class DirtyFileMetadata( - val maybeImportedSignatures: Collection, - - val oldDirectDependencies: KotlinSourceFileMap<*>, - - override val inverseDependencies: KotlinSourceFileMutableMap> = KotlinSourceFileMutableMap(), - override val directDependencies: KotlinSourceFileMutableMap> = 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 by lazy { inverseDependencies.flatSignatures() } - - var importedSignaturesModified = false - - override val inverseDependencies = oldMetadata.inverseDependencies.toMutable() - override val directDependencies = oldMetadata.directDependencies.toMutable() - - override fun getExportedSignatures(): Set = newExportedSignatures - - fun isExportedSignaturesUpdated() = newExportedSignatures != oldInverseDependencies.flatSignatures() - } - - private fun KotlinSourceFileMutableMap.addNewMetadata( - libFile: KotlinLibraryFile, srcFile: KotlinSourceFile, oldMetadata: KotlinSourceFileMetadata - ) = this[libFile, srcFile] ?: UpdatedDependenciesMetadata(oldMetadata).also { - this[libFile, srcFile] = it - } - private inner class CacheUpdaterInternal { val signatureHashCalculator = IdSignatureHashCalculator() diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/KotlinSourceFileMetadata.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/KotlinSourceFileMetadata.kt index d6c44f5b33c..e310a9d53a8 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/KotlinSourceFileMetadata.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/KotlinSourceFileMetadata.kt @@ -101,3 +101,52 @@ abstract class KotlinSourceFileMetadata : KotlinSourceFileExports() { } fun KotlinSourceFileMetadata.isEmpty() = inverseDependencies.isEmpty() && directDependencies.isEmpty() + +internal class DirtyFileExports( + override val inverseDependencies: KotlinSourceFileMutableMap> = KotlinSourceFileMutableMap() +) : KotlinSourceFileExports() { + override fun getExportedSignatures(): Set = allExportedSignatures + + val allExportedSignatures = hashSetOf() +} + +internal class DirtyFileMetadata( + val maybeImportedSignatures: Collection, + + val oldDirectDependencies: KotlinSourceFileMap<*>, + + override val inverseDependencies: KotlinSourceFileMutableMap> = KotlinSourceFileMutableMap(), + override val directDependencies: KotlinSourceFileMutableMap> = 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 by lazy { inverseDependencies.flatSignatures() } + + var importedSignaturesModified = false + + override val inverseDependencies = oldMetadata.inverseDependencies.toMutable() + override val directDependencies = oldMetadata.directDependencies.toMutable() + + override fun getExportedSignatures(): Set = newExportedSignatures + + fun isExportedSignaturesUpdated() = newExportedSignatures != oldInverseDependencies.flatSignatures() +} + +internal fun KotlinSourceFileMutableMap.addNewMetadata( + libFile: KotlinLibraryFile, srcFile: KotlinSourceFile, oldMetadata: KotlinSourceFileMetadata +) = this[libFile, srcFile] ?: UpdatedDependenciesMetadata(oldMetadata).also { + this[libFile, srcFile] = it +}