JS IR IC: deserialization fix
This commit is contained in:
committed by
teamcityserver
parent
058ca16af7
commit
0130d18ea9
+11
-13
@@ -167,6 +167,16 @@ class IcModuleDeserializer(
|
||||
moduleReversedFileIndex.putIfAbsent(it, icDeserializer) // TODO Why not simple put?
|
||||
}
|
||||
|
||||
icDeserializer.init()
|
||||
icDeserializer.reversedSignatureIndex.keys.forEach {
|
||||
if (it in icModuleReversedFileIndex) {
|
||||
val existed = icModuleReversedFileIndex[it]!!
|
||||
error("Duplicate signature $it in both ${existed.originalFileDeserializer.file.path} and in ${file.path}")
|
||||
}
|
||||
|
||||
icModuleReversedFileIndex[it] = icDeserializer
|
||||
}
|
||||
|
||||
if (strategy.theWholeWorld) {
|
||||
icDeserializer.allOriginalDeclarationSignatures().forEach { it.originalEnqueue(icDeserializer) }
|
||||
}
|
||||
@@ -192,6 +202,7 @@ class IcModuleDeserializer(
|
||||
|
||||
fun IdSignature.originalEnqueue(fileDeserializer: IcFileDeserializer) {
|
||||
if (fileDeserializer.enqueueForDeserialization(this)) {
|
||||
linker.modulesWithReachableTopLevels.add(this@IcModuleDeserializer)
|
||||
originalFileQueue.addLast(fileDeserializer)
|
||||
}
|
||||
}
|
||||
@@ -211,19 +222,6 @@ class IcModuleDeserializer(
|
||||
}
|
||||
|
||||
override fun postProcess() {
|
||||
icDeserializers.forEach { icDeserializer ->
|
||||
val file = icDeserializer.originalFileDeserializer.file
|
||||
icDeserializer.init()
|
||||
icDeserializer.reversedSignatureIndex.keys.forEach {
|
||||
if (it in icModuleReversedFileIndex) {
|
||||
val existed = icModuleReversedFileIndex[it]!!
|
||||
error("Duplicate signature $it in both ${existed.originalFileDeserializer.file.path} and in ${file.path}")
|
||||
}
|
||||
|
||||
icModuleReversedFileIndex[it] = icDeserializer
|
||||
}
|
||||
}
|
||||
|
||||
while (signatureQueue.isNotEmpty()) {
|
||||
val icFileDeserializer = fileQueue.removeFirst()
|
||||
val signature = signatureQueue.removeFirst()
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ class JsIrLinker(
|
||||
}
|
||||
|
||||
fun loadIcIr(preprocess: (IrModuleFragment) -> Unit) {
|
||||
deserializersForModules.values.forEach {
|
||||
deserializersForModules.values.reversed().forEach {
|
||||
if (it.moduleDescriptor in loweredIcData) {
|
||||
preprocess(it.moduleFragment)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user