[FIR] Enhance caches in providers

This commit is contained in:
Simon Ogorodnik
2019-06-14 19:50:21 +03:00
committed by Mikhail Glukhikh
parent f88fafea9d
commit 03c3469a14
2 changed files with 10 additions and 10 deletions
@@ -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