[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
@@ -15,12 +15,12 @@ import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
abstract class AbstractFirSymbolProvider : FirSymbolProvider() {
protected val classCache = mutableMapOf<ClassId, ConeClassLikeSymbol?>()
protected val topLevelCallableCache = mutableMapOf<CallableId, List<ConeCallableSymbol>>()
protected val packageCache = mutableMapOf<FqName, FqName?>()
protected val classCache = HashMap<ClassId, ConeClassLikeSymbol?>()
protected val topLevelCallableCache = HashMap<CallableId, List<ConeCallableSymbol>>()
protected val packageCache = HashMap<FqName, FqName?>()
protected inline fun <K, V : Any?> MutableMap<K, V>.lookupCacheOrCalculate(key: K, crossinline l: (K) -> V): V? {
return if (key in this.keys) {
return if (containsKey(key)) {
this[key]
} else {
val calculated = l(key)
@@ -32,7 +32,7 @@ abstract class AbstractFirSymbolProvider : FirSymbolProvider() {
protected inline fun <K, V : Any?, T> MutableMap<K, V>.lookupCacheOrCalculateWithPostCompute(
key: K, crossinline l: (K) -> Pair<V, T>, postCompute: (V, T) -> Unit
): V? {
return if (key in this.keys) {
return if (containsKey(key)) {
this[key]
} else {
val calculated = l(key)