JVM_IR: synchronized getOrPut for SLRUMap
This commit is contained in:
@@ -28,12 +28,14 @@ class InlineCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline fun <K, V : Any> SLRUMap<K, V>.getOrPut(key: K, defaultValue: () -> V): V {
|
inline fun <K, V : Any> SLRUMap<K, V>.getOrPut(key: K, defaultValue: () -> V): V {
|
||||||
val value = get(key)
|
synchronized(this) {
|
||||||
return if (value == null) {
|
val value = get(key)
|
||||||
val answer = defaultValue()
|
return if (value == null) {
|
||||||
put(key, answer)
|
val answer = defaultValue()
|
||||||
answer
|
put(key, answer)
|
||||||
} else {
|
answer
|
||||||
value
|
} else {
|
||||||
|
value
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user