[klibs] Refactored BasicIrModuleDeserializer
This commit is contained in:
+7
-7
@@ -32,9 +32,9 @@ abstract class BasicIrModuleDeserializer(
|
|||||||
|
|
||||||
private val fileToDeserializerMap = mutableMapOf<IrFile, IrFileDeserializer>()
|
private val fileToDeserializerMap = mutableMapOf<IrFile, IrFileDeserializer>()
|
||||||
|
|
||||||
private val moduleDeserializationState = ModuleDeserializationState(linker, this)
|
private val moduleDeserializationState = ModuleDeserializationState()
|
||||||
|
|
||||||
val moduleReversedFileIndex = mutableMapOf<IdSignature, FileDeserializationState>()
|
protected val moduleReversedFileIndex = mutableMapOf<IdSignature, FileDeserializationState>()
|
||||||
|
|
||||||
override val moduleDependencies by lazy {
|
override val moduleDependencies by lazy {
|
||||||
moduleDescriptor.allDependencyModules
|
moduleDescriptor.allDependencyModules
|
||||||
@@ -166,18 +166,17 @@ abstract class BasicIrModuleDeserializer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override val kind get() = IrModuleDeserializerKind.DESERIALIZED
|
override val kind get() = IrModuleDeserializerKind.DESERIALIZED
|
||||||
}
|
|
||||||
|
|
||||||
private class ModuleDeserializationState(val linker: KotlinIrLinker, val moduleDeserializer: BasicIrModuleDeserializer) {
|
private inner class ModuleDeserializationState {
|
||||||
private val filesWithPendingTopLevels = mutableSetOf<FileDeserializationState>()
|
private val filesWithPendingTopLevels = mutableSetOf<FileDeserializationState>()
|
||||||
|
|
||||||
fun enqueueFile(fileDeserializationState: FileDeserializationState) {
|
fun enqueueFile(fileDeserializationState: FileDeserializationState) {
|
||||||
filesWithPendingTopLevels.add(fileDeserializationState)
|
filesWithPendingTopLevels.add(fileDeserializationState)
|
||||||
linker.modulesWithReachableTopLevels.add(moduleDeserializer)
|
linker.modulesWithReachableTopLevels.add(this@BasicIrModuleDeserializer)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addIdSignature(key: IdSignature) {
|
fun addIdSignature(key: IdSignature) {
|
||||||
val fileLocalDeserializationState = moduleDeserializer.moduleReversedFileIndex[key] ?: error("No file found for key $key")
|
val fileLocalDeserializationState = moduleReversedFileIndex[key] ?: error("No file found for key $key")
|
||||||
fileLocalDeserializationState.addIdSignature(key)
|
fileLocalDeserializationState.addIdSignature(key)
|
||||||
|
|
||||||
enqueueFile(fileLocalDeserializationState)
|
enqueueFile(fileLocalDeserializationState)
|
||||||
@@ -194,7 +193,8 @@ private class ModuleDeserializationState(val linker: KotlinIrLinker, val moduleD
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun toString(): String = moduleDeserializer.klib.toString()
|
override fun toString(): String = klib.toString()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IrModuleDeserializer.findModuleDeserializerForTopLevelId(idSignature: IdSignature): IrModuleDeserializer? {
|
fun IrModuleDeserializer.findModuleDeserializerForTopLevelId(idSignature: IdSignature): IrModuleDeserializer? {
|
||||||
|
|||||||
Reference in New Issue
Block a user