[K/N] Do not use LazyIr for per-file caches

#KT-63789 Fixed
This commit is contained in:
Igor Chevdar
2023-11-24 17:36:54 +02:00
committed by Space Team
parent b264cf2119
commit 1805f322f8
3 changed files with 14 additions and 17 deletions
@@ -118,18 +118,16 @@ abstract class BasicIrModuleDeserializer(
fileToDeserializerMap[file] = fileDeserializationState.fileDeserializer
if (!fileStrategy.onDemand) {
val topLevelDeclarations = fileDeserializationState.fileDeserializer.reversedSignatureIndex.keys
topLevelDeclarations.forEach {
moduleReversedFileIndex.putIfAbsent(it, fileDeserializationState) // TODO Why not simple put?
}
val topLevelDeclarations = fileDeserializationState.fileDeserializer.reversedSignatureIndex.keys
topLevelDeclarations.forEach {
moduleReversedFileIndex.putIfAbsent(it, fileDeserializationState) // TODO Why not simple put?
}
if (fileStrategy.theWholeWorld) {
fileDeserializationState.enqueueAllDeclarations()
}
if (fileStrategy.theWholeWorld || fileStrategy.explicitlyExported) {
moduleDeserializationState.enqueueFile(fileDeserializationState)
}
if (fileStrategy.theWholeWorld) {
fileDeserializationState.enqueueAllDeclarations()
}
if (fileStrategy.theWholeWorld || fileStrategy.explicitlyExported) {
moduleDeserializationState.enqueueFile(fileDeserializationState)
}
return fileDeserializationState
@@ -398,7 +398,7 @@ enum class DeserializationStrategy(
val theWholeWorld: Boolean,
val inlineBodies: Boolean
) {
ON_DEMAND(true, true, false, false, true),
ON_DEMAND(true, false, false, false, false),
ONLY_REFERENCED(false, true, false, false, true),
ALL(false, true, true, true, true),
EXPLICITLY_EXPORTED(false, true, true, false, true),
@@ -234,7 +234,6 @@ internal class KonanPartialModuleDeserializer(
outerThisIndex,
Array(fields.size) {
val field = fields[it]
val irField = field.irField ?: error("No IR for field ${field.name} of ${irClass.render()}")
if (it == outerThisIndex) {
require(irClass.isInner) { "Expected an inner class: ${irClass.render()}" }
require(protoClasses.size > 1) { "An inner class must have at least one outer class" }
@@ -249,14 +248,14 @@ internal class KonanPartialModuleDeserializer(
field.alignment
)
} else {
val protoField = protoFieldsMap[field.name] ?: error("No proto for ${irField.render()}")
val protoField = protoFieldsMap[field.name] ?: error("No proto for ${field.name}")
val nameAndType = BinaryNameAndType.decode(protoField.nameType)
var flags = 0
if (field.isConst)
flags = flags or SerializedClassFieldInfo.FLAG_IS_CONST
val classifier = irField.type.classifierOrNull
?: error("Fields of type ${irField.type.render()} are not supported")
val primitiveBinaryType = irField.type.computePrimitiveBinaryTypeOrNull()
val classifier = field.type.classifierOrNull
?: error("Fields of type ${field.type.render()} are not supported")
val primitiveBinaryType = field.type.computePrimitiveBinaryTypeOrNull()
SerializedClassFieldInfo(
nameAndType.nameIndex,