[SLC] SymbolLightModifierList: replace custom loop with compareAndSet with updateAndGet

^KTIJ-23783
This commit is contained in:
Dmitrii Gridin
2022-12-06 14:38:16 +01:00
committed by Space Team
parent 3ee451c873
commit 8a9acfcab0
@@ -97,10 +97,9 @@ internal class LazyModifiersBox(
fun hasModifier(modifier: String): Boolean {
modifiersMapReference.get()[modifier]?.let { return it }
val newValues = computer(modifier) ?: mapOf(modifier to false)
do {
val currentMap = modifiersMapReference.get()
val newMap = currentMap.putAll(newValues)
} while (!modifiersMapReference.compareAndSet(currentMap, newMap))
modifiersMapReference.updateAndGet {
it.putAll(newValues)
}
return newValues[modifier] ?: error("Inconsistent state: $modifier")
}