[FIR] Enhance caches in providers
This commit is contained in:
committed by
Mikhail Glukhikh
parent
f88fafea9d
commit
03c3469a14
+5
-5
@@ -55,6 +55,7 @@ import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||
import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErrorData
|
||||
import org.jetbrains.kotlin.serialization.deserialization.getName
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
||||
import org.jetbrains.kotlin.utils.getOrPutNullable
|
||||
|
||||
class KotlinDeserializedJvmSymbolsProvider(
|
||||
val session: FirSession,
|
||||
@@ -63,10 +64,9 @@ class KotlinDeserializedJvmSymbolsProvider(
|
||||
private val kotlinClassFinder: KotlinClassFinder,
|
||||
private val javaClassFinder: JavaClassFinder
|
||||
) : AbstractFirSymbolProvider() {
|
||||
|
||||
private val classesCache = mutableMapOf<ClassId, FirClassSymbol>()
|
||||
private val typeAliasCache = mutableMapOf<ClassId, FirTypeAliasSymbol?>()
|
||||
private val packagePartsCache = mutableMapOf<FqName, Collection<PackagePartsCacheData>>()
|
||||
private val classesCache = HashMap<ClassId, FirClassSymbol>()
|
||||
private val typeAliasCache = HashMap<ClassId, FirTypeAliasSymbol?>()
|
||||
private val packagePartsCache = HashMap<FqName, Collection<PackagePartsCacheData>>()
|
||||
|
||||
private class PackagePartsCacheData(
|
||||
val proto: ProtoBuf.Package,
|
||||
@@ -156,7 +156,7 @@ class KotlinDeserializedJvmSymbolsProvider(
|
||||
private fun findAndDeserializeTypeAlias(
|
||||
classId: ClassId
|
||||
): FirTypeAliasSymbol? {
|
||||
return typeAliasCache.getOrPut(classId) {
|
||||
return typeAliasCache.getOrPutNullable(classId) {
|
||||
getPackageParts(classId.packageFqName).firstNotNullResult { part ->
|
||||
val ids = part.typeAliasNameIndex[classId.shortClassName]
|
||||
if (ids == null || ids.isEmpty()) return@firstNotNullResult null
|
||||
|
||||
Reference in New Issue
Block a user