From 2736876919707301a3afa36368a959a82b751cdf Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 23 Jan 2019 14:06:39 +0300 Subject: [PATCH] Cleaned up deserialization reachability loop a little. --- .../KonanIrModuleDeserializer.kt | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrModuleDeserializer.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrModuleDeserializer.kt index cdce02fc719..5ded1768dab 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrModuleDeserializer.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrModuleDeserializer.kt @@ -212,7 +212,6 @@ class KonanIrModuleDeserializer( reachableTopLevels.add(topLevelKey) - // TODO: This is a mess. Cleanup! do { val key = reachableTopLevels.first() @@ -221,21 +220,15 @@ class KonanIrModuleDeserializer( continue } - val previousModuleDescriptor = deserializedModuleDescriptor - deserializedModuleDescriptor = key.moduleOfOrigin - - if (deserializedModuleDescriptor == null) { - deserializedModuleDescriptor = previousModuleDescriptor - reachableTopLevels.remove(key) - deserializedTopLevels.add(key) - continue + if (key.moduleOfOrigin != null) { + deserializedModuleDescriptor = key.moduleOfOrigin + val reachable = deserializeTopLevelDeclaration(key) + reversedFileIndex[key]!!.declarations.add(reachable) + } else { + // The key.moduleOrigin is null for uniqIds that we haven't seen in any of the library headers. + // Just skip it for now and handle it elsewhere. } - val reachable = deserializeTopLevelDeclaration(key) - - deserializedModuleDescriptor = previousModuleDescriptor - - reversedFileIndex[key]!!.declarations.add(reachable) reachableTopLevels.remove(key) deserializedTopLevels.add(key) } while (reachableTopLevels.isNotEmpty())