FIR: optimize caching in JVM deserializer
This commit is contained in:
committed by
Mikhail Glukhikh
parent
f453e7df27
commit
879563233a
+9
-6
@@ -65,18 +65,21 @@ class KotlinDeserializedJvmSymbolsProvider(
|
|||||||
classId: ClassId,
|
classId: ClassId,
|
||||||
parentContext: FirDeserializationContext? = null
|
parentContext: FirDeserializationContext? = null
|
||||||
): FirClassSymbol? {
|
): FirClassSymbol? {
|
||||||
val kotlinJvmBinaryClass = kotlinClassFinder.findKotlinClass(classId) ?: return null
|
return classesCache.getOrPut(classId) {
|
||||||
if (kotlinJvmBinaryClass.classHeader.kind != KotlinClassHeader.Kind.CLASS) return null
|
//return null
|
||||||
|
val kotlinJvmBinaryClass = kotlinClassFinder.findKotlinClass(classId) ?: return null
|
||||||
|
if (kotlinJvmBinaryClass.classHeader.kind != KotlinClassHeader.Kind.CLASS) return null
|
||||||
|
|
||||||
val data = kotlinJvmBinaryClass.classHeader.data ?: return null
|
val data = kotlinJvmBinaryClass.classHeader.data ?: return null
|
||||||
val strings = kotlinJvmBinaryClass.classHeader.strings ?: return null
|
val strings = kotlinJvmBinaryClass.classHeader.strings ?: return null
|
||||||
val (nameResolver, classProto) = JvmProtoBufUtil.readClassDataFrom(data, strings)
|
val (nameResolver, classProto) = JvmProtoBufUtil.readClassDataFrom(data, strings)
|
||||||
|
|
||||||
return classesCache.getOrPut(classId, { FirClassSymbol(classId) }) { symbol ->
|
val symbol = FirClassSymbol(classId)
|
||||||
deserializeClassToSymbol(
|
deserializeClassToSymbol(
|
||||||
classId, classProto, symbol, nameResolver, session, parentContext,
|
classId, classProto, symbol, nameResolver, session, parentContext,
|
||||||
this::findAndDeserializeClass
|
this::findAndDeserializeClass
|
||||||
)
|
)
|
||||||
|
symbol
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user