From 8a9acfcab013fcd44ccc8187102c45c054206f8a Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Tue, 6 Dec 2022 14:38:16 +0100 Subject: [PATCH] [SLC] SymbolLightModifierList: replace custom loop with compareAndSet with updateAndGet ^KTIJ-23783 --- .../symbol/modifierLists/SymbolLightModifierList.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt index 41bb624ee37..bc498a15f66 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt @@ -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") }