From be67dacef152ccf9fe4477ec681ac1a4d97c58d1 Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Wed, 27 Jan 2021 22:02:50 +0300 Subject: [PATCH] JVM_IR: synchronized getOrPut for SLRUMap --- .../kotlin/codegen/inline/InlineCache.kt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCache.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCache.kt index efced94ca28..8e7d1d5a063 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCache.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCache.kt @@ -28,12 +28,14 @@ class InlineCache { } inline fun SLRUMap.getOrPut(key: K, defaultValue: () -> V): V { - val value = get(key) - return if (value == null) { - val answer = defaultValue() - put(key, answer) - answer - } else { - value + synchronized(this) { + val value = get(key) + return if (value == null) { + val answer = defaultValue() + put(key, answer) + answer + } else { + value + } } }