[K/N] Do not use LazyIr for per-file caches
#KT-63789 Fixed
This commit is contained in:
+9
-11
@@ -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
|
||||
|
||||
+1
-1
@@ -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),
|
||||
|
||||
+4
-5
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user