[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
|
fileToDeserializerMap[file] = fileDeserializationState.fileDeserializer
|
||||||
|
|
||||||
if (!fileStrategy.onDemand) {
|
val topLevelDeclarations = fileDeserializationState.fileDeserializer.reversedSignatureIndex.keys
|
||||||
val topLevelDeclarations = fileDeserializationState.fileDeserializer.reversedSignatureIndex.keys
|
topLevelDeclarations.forEach {
|
||||||
topLevelDeclarations.forEach {
|
moduleReversedFileIndex.putIfAbsent(it, fileDeserializationState) // TODO Why not simple put?
|
||||||
moduleReversedFileIndex.putIfAbsent(it, fileDeserializationState) // TODO Why not simple put?
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (fileStrategy.theWholeWorld) {
|
if (fileStrategy.theWholeWorld) {
|
||||||
fileDeserializationState.enqueueAllDeclarations()
|
fileDeserializationState.enqueueAllDeclarations()
|
||||||
}
|
}
|
||||||
if (fileStrategy.theWholeWorld || fileStrategy.explicitlyExported) {
|
if (fileStrategy.theWholeWorld || fileStrategy.explicitlyExported) {
|
||||||
moduleDeserializationState.enqueueFile(fileDeserializationState)
|
moduleDeserializationState.enqueueFile(fileDeserializationState)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return fileDeserializationState
|
return fileDeserializationState
|
||||||
|
|||||||
+1
-1
@@ -398,7 +398,7 @@ enum class DeserializationStrategy(
|
|||||||
val theWholeWorld: Boolean,
|
val theWholeWorld: Boolean,
|
||||||
val inlineBodies: 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),
|
ONLY_REFERENCED(false, true, false, false, true),
|
||||||
ALL(false, true, true, true, true),
|
ALL(false, true, true, true, true),
|
||||||
EXPLICITLY_EXPORTED(false, true, true, false, true),
|
EXPLICITLY_EXPORTED(false, true, true, false, true),
|
||||||
|
|||||||
+4
-5
@@ -234,7 +234,6 @@ internal class KonanPartialModuleDeserializer(
|
|||||||
outerThisIndex,
|
outerThisIndex,
|
||||||
Array(fields.size) {
|
Array(fields.size) {
|
||||||
val field = fields[it]
|
val field = fields[it]
|
||||||
val irField = field.irField ?: error("No IR for field ${field.name} of ${irClass.render()}")
|
|
||||||
if (it == outerThisIndex) {
|
if (it == outerThisIndex) {
|
||||||
require(irClass.isInner) { "Expected an inner class: ${irClass.render()}" }
|
require(irClass.isInner) { "Expected an inner class: ${irClass.render()}" }
|
||||||
require(protoClasses.size > 1) { "An inner class must have at least one outer class" }
|
require(protoClasses.size > 1) { "An inner class must have at least one outer class" }
|
||||||
@@ -249,14 +248,14 @@ internal class KonanPartialModuleDeserializer(
|
|||||||
field.alignment
|
field.alignment
|
||||||
)
|
)
|
||||||
} else {
|
} 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)
|
val nameAndType = BinaryNameAndType.decode(protoField.nameType)
|
||||||
var flags = 0
|
var flags = 0
|
||||||
if (field.isConst)
|
if (field.isConst)
|
||||||
flags = flags or SerializedClassFieldInfo.FLAG_IS_CONST
|
flags = flags or SerializedClassFieldInfo.FLAG_IS_CONST
|
||||||
val classifier = irField.type.classifierOrNull
|
val classifier = field.type.classifierOrNull
|
||||||
?: error("Fields of type ${irField.type.render()} are not supported")
|
?: error("Fields of type ${field.type.render()} are not supported")
|
||||||
val primitiveBinaryType = irField.type.computePrimitiveBinaryTypeOrNull()
|
val primitiveBinaryType = field.type.computePrimitiveBinaryTypeOrNull()
|
||||||
|
|
||||||
SerializedClassFieldInfo(
|
SerializedClassFieldInfo(
|
||||||
nameAndType.nameIndex,
|
nameAndType.nameIndex,
|
||||||
|
|||||||
Reference in New Issue
Block a user