From 92fc3ec8246da458d0148124ce9beaae3d5c587a Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Mon, 22 Jan 2024 16:56:17 +0100 Subject: [PATCH] [LL FIR] LLFirLockProvider: add registry key to disable global phase lock It is enabled by default ^KT-56551 --- .../low/level/api/fir/file/builder/LLFirLockProvider.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt index 8e46f0d123f..17e5fb0dc2a 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -42,6 +42,8 @@ internal class LLFirLockProvider(private val checker: LLFirLazyResolveContractCh phase: FirResolvePhase, action: () -> Unit, ) { + if (!implicitPhaseLockEnabled) return action() + val lock = when (phase) { FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE -> implicitTypesLock else -> null @@ -237,4 +239,8 @@ private val globalLockEnabled: Boolean by lazy(LazyThreadSafetyMode.PUBLICATION) Registry.`is`("kotlin.parallel.resolve.under.global.lock", false) } +private val implicitPhaseLockEnabled: Boolean by lazy(LazyThreadSafetyMode.PUBLICATION) { + Registry.`is`("kotlin.implicit.resolve.phase.under.global.lock", true) +} + private const val DEFAULT_LOCKING_INTERVAL = 50L \ No newline at end of file