[FIR] add possibility to specify initialCapacity and loadFactor in FirCachesFactory.createCache
This commit is contained in:
+1
-1
@@ -9,9 +9,9 @@ import org.jetbrains.kotlin.fir.caches.FirCache
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
internal class FirThreadSafeCache<K : Any, V, CONTEXT>(
|
||||
private val map: ConcurrentHashMap<K, Any> = ConcurrentHashMap<K, Any>(),
|
||||
private val createValue: (K, CONTEXT) -> V
|
||||
) : FirCache<K, V, CONTEXT>() {
|
||||
private val map = ConcurrentHashMap<K, Any>()
|
||||
|
||||
override fun getValue(key: K, context: CONTEXT): V =
|
||||
map.getOrPutWithNullableValue(key) { createValue(it, context) }
|
||||
|
||||
+15
-2
@@ -5,11 +5,24 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.fir.caches
|
||||
|
||||
import org.jetbrains.kotlin.fir.caches.*
|
||||
import org.jetbrains.kotlin.fir.caches.FirCache
|
||||
import org.jetbrains.kotlin.fir.caches.FirCachesFactory
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
object FirThreadSafeCachesFactory : FirCachesFactory() {
|
||||
override fun <KEY : Any, VALUE, CONTEXT> createCache(createValue: (KEY, CONTEXT) -> VALUE): FirCache<KEY, VALUE, CONTEXT> =
|
||||
FirThreadSafeCache(createValue)
|
||||
FirThreadSafeCache(createValue = createValue)
|
||||
|
||||
override fun <K : Any, V, CONTEXT> createCache(
|
||||
initialCapacity: Int,
|
||||
loadFactor: Float,
|
||||
createValue: (K, CONTEXT) -> V
|
||||
): FirCache<K, V, CONTEXT> =
|
||||
FirThreadSafeCache(
|
||||
ConcurrentHashMap<K, Any>(initialCapacity, loadFactor),
|
||||
createValue
|
||||
)
|
||||
|
||||
|
||||
override fun <KEY : Any, VALUE, CONTEXT, DATA> createCacheWithPostCompute(
|
||||
createValue: (KEY, CONTEXT) -> Pair<VALUE, DATA>,
|
||||
|
||||
Reference in New Issue
Block a user