diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt index e5341cf1739..f08cacbbcf0 100644 --- a/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt @@ -16,7 +16,7 @@ import java.util.* abstract class TargetPlatform(val platformName: String) { private data class DefaultImportsKey(val includeKotlinComparisons: Boolean, val includeLowPriorityImports: Boolean) - private val defaultImports = LockBasedStorageManager().let { storageManager -> + private val defaultImports = LockBasedStorageManager("TargetPlatform").let { storageManager -> storageManager.createMemoizedFunction> { (includeKotlinComparisons, includeLowPriorityImports) -> ArrayList().apply { listOf( diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptAnnotationsPreprocessing.kt b/compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptAnnotationsPreprocessing.kt index c4386cc80b8..d4d111db7cf 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptAnnotationsPreprocessing.kt +++ b/compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptAnnotationsPreprocessing.kt @@ -37,7 +37,7 @@ internal fun String?.orAnonymous(kind: String = ""): String = this ?: "" internal fun constructAnnotation(psi: KtAnnotationEntry, targetClass: KClass, project: Project): Annotation { - val module = ModuleDescriptorImpl(Name.special(""), LockBasedStorageManager(), DefaultBuiltIns.Instance) + val module = ModuleDescriptorImpl(Name.special(""), LockBasedStorageManager("scriptAnnotationsPreprocessing"), DefaultBuiltIns.Instance) val evaluator = ConstantExpressionEvaluator(module, LanguageVersionSettingsImpl.DEFAULT, project) val trace = BindingTraceContext() diff --git a/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt b/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt index d8386072cbf..eb55378dbb1 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt @@ -85,7 +85,7 @@ class MutableModuleContextImpl( fun GlobalContext(): GlobalContextImpl { val tracker = ExceptionTracker() - return GlobalContextImpl(LockBasedStorageManager.createWithExceptionHandling(tracker), tracker) + return GlobalContextImpl(LockBasedStorageManager.createWithExceptionHandling("GlobalContext", tracker), tracker) } fun ProjectContext(project: Project): ProjectContext = ProjectContextImpl(project, GlobalContext()) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalUsageChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalUsageChecker.kt index 1b96033de00..ac8963b8455 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalUsageChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalUsageChecker.kt @@ -215,7 +215,7 @@ class ExperimentalUsageChecker(project: Project) : CallChecker { // "-Xuse-experimental" arguments. However, it's not easy to do this. This should be solved in the future with the support of // module annotations. For now, we only check deprecations because this is needed to correctly retire unneeded compiler arguments. val deprecationResolver = - DeprecationResolver(LockBasedStorageManager(), languageVersionSettings, CoroutineCompatibilitySupport.ENABLED) + DeprecationResolver(LockBasedStorageManager("ExperimentalUsageChecker"), languageVersionSettings, CoroutineCompatibilitySupport.ENABLED) // Returns true if fqName refers to a valid experimental API marker. fun checkAnnotation(fqName: String): Boolean { diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt index 0d2cdb2b37c..1497bcd3346 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt @@ -84,11 +84,11 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() { if (files.any(TestFile::checkLazyLog)) { lazyOperationsLog = LazyOperationsLog(HASH_SANITIZER) storageManager = LoggingStorageManager( - LockBasedStorageManager.createWithExceptionHandling(tracker), + LockBasedStorageManager.createWithExceptionHandling("AbstractDiagnosticTest", tracker), lazyOperationsLog.addRecordFunction ) } else { - storageManager = LockBasedStorageManager.createWithExceptionHandling(tracker) + storageManager = LockBasedStorageManager.createWithExceptionHandling("AbstractDiagnosticTest", tracker) } val context = SimpleGlobalContext(storageManager, tracker) diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt index c8c22422ef0..b43f66fcb02 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt @@ -41,7 +41,7 @@ class BuiltInsSerializerTest : TestCaseWithTmpdir() { val module = KotlinTestUtils.createEmptyModule("", DefaultBuiltIns.Instance) val packageFragmentProvider = BuiltInsLoaderImpl().createBuiltInPackageFragmentProvider( - LockBasedStorageManager(), module, setOf(TEST_PACKAGE_FQNAME), emptyList(), PlatformDependentDeclarationFilter.All + LockBasedStorageManager("BuiltInsSerializerTest"), module, setOf(TEST_PACKAGE_FQNAME), emptyList(), PlatformDependentDeclarationFilter.All ) { val file = File(tmpdir, it) if (file.exists()) FileInputStream(file) else null diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java index c38e82c2c6a..069b1f3f8ec 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java +++ b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java @@ -83,7 +83,7 @@ public class LoadBuiltinsTest extends KotlinTestWithEnvironment { @NotNull private static PackageFragmentProvider createBuiltInsPackageFragmentProvider() { - LockBasedStorageManager storageManager = new LockBasedStorageManager(); + LockBasedStorageManager storageManager = new LockBasedStorageManager("LoadBuiltinsTest"); ModuleDescriptorImpl builtInsModule = new ModuleDescriptorImpl(KotlinBuiltIns.BUILTINS_MODULE_NAME, storageManager, DefaultBuiltIns.getInstance()); diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt index 125e1eb8bad..ae0ba393b58 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializerTest.kt @@ -99,7 +99,7 @@ class KotlinJavascriptSerializerTest : TestCaseWithTmpdir() { val (header, packageFragmentProtos) = readModuleAsProto(metadata.body, metadata.version) val provider = createKotlinJavascriptPackageFragmentProvider( - LockBasedStorageManager(), module, header, packageFragmentProtos, metadata.version, + LockBasedStorageManager("KotlinJavascriptrSerializerTest"), module, header, packageFragmentProtos, metadata.version, DeserializationConfiguration.Default, LookupTracker.DO_NOTHING ).sure { "No package fragment provider was created" } diff --git a/compiler/tests/org/jetbrains/kotlin/storage/StorageManagerTest.java b/compiler/tests/org/jetbrains/kotlin/storage/StorageManagerTest.java index 884caffca20..5ef7efb779d 100644 --- a/compiler/tests/org/jetbrains/kotlin/storage/StorageManagerTest.java +++ b/compiler/tests/org/jetbrains/kotlin/storage/StorageManagerTest.java @@ -34,7 +34,7 @@ public class StorageManagerTest extends TestCase { @Override public void setUp() throws Exception { super.setUp(); - m = new LockBasedStorageManager(); + m = new LockBasedStorageManager("StorageManagerTest"); } public static void doTestComputesOnce(Function0 v, T expected, Counter counter) throws Exception { @@ -416,7 +416,7 @@ public class StorageManagerTest extends TestCase { public void testExceptionHandlingStrategyForLazyValues() throws Exception { class RethrownException extends RuntimeException {} - LockBasedStorageManager m = LockBasedStorageManager.createWithExceptionHandling(throwable -> { + LockBasedStorageManager m = LockBasedStorageManager.createWithExceptionHandling("StorageManagerTest", throwable -> { throw new RethrownException(); }); try { @@ -432,7 +432,7 @@ public class StorageManagerTest extends TestCase { public void testExceptionHandlingStrategyForMemoizedFunctions() throws Exception { class RethrownException extends RuntimeException {} - LockBasedStorageManager m = LockBasedStorageManager.createWithExceptionHandling(throwable -> { + LockBasedStorageManager m = LockBasedStorageManager.createWithExceptionHandling("StorageManagerTest", throwable -> { throw new RethrownException(); }); try { diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/builtins/jvm/JvmBuiltInsSettings.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/builtins/jvm/JvmBuiltInsSettings.kt index 9ea7877be4d..de849d47cd2 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/builtins/jvm/JvmBuiltInsSettings.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/builtins/jvm/JvmBuiltInsSettings.kt @@ -494,7 +494,7 @@ open class JvmBuiltInsSettings( } } -private class FallbackBuiltIns private constructor() : KotlinBuiltIns(LockBasedStorageManager()) { +private class FallbackBuiltIns private constructor() : KotlinBuiltIns(LockBasedStorageManager("FallbackBuiltIns")) { init { createBuiltInsModule() } diff --git a/core/descriptors.runtime/src/kotlin/reflect/jvm/internal/components/RuntimeModuleData.kt b/core/descriptors.runtime/src/kotlin/reflect/jvm/internal/components/RuntimeModuleData.kt index 8beb01de423..0e8af5e7fd5 100644 --- a/core/descriptors.runtime/src/kotlin/reflect/jvm/internal/components/RuntimeModuleData.kt +++ b/core/descriptors.runtime/src/kotlin/reflect/jvm/internal/components/RuntimeModuleData.kt @@ -54,7 +54,7 @@ class RuntimeModuleData private constructor( companion object { fun create(classLoader: ClassLoader): RuntimeModuleData { - val storageManager = LockBasedStorageManager() + val storageManager = LockBasedStorageManager("RuntimeModuleData") val builtIns = JvmBuiltIns(storageManager) val module = ModuleDescriptorImpl(Name.special(""), storageManager, builtIns) diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/DefaultBuiltIns.kt b/core/descriptors/src/org/jetbrains/kotlin/builtins/DefaultBuiltIns.kt index 0179d13c0eb..b744dda05e5 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/DefaultBuiltIns.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/DefaultBuiltIns.kt @@ -18,7 +18,7 @@ package org.jetbrains.kotlin.builtins import org.jetbrains.kotlin.storage.LockBasedStorageManager -class DefaultBuiltIns private constructor() : KotlinBuiltIns(LockBasedStorageManager()) { +class DefaultBuiltIns private constructor() : KotlinBuiltIns(LockBasedStorageManager("DefaultBuiltIns")) { init { createBuiltInsModule() } diff --git a/core/util.runtime/src/org/jetbrains/kotlin/storage/LockBasedStorageManager.java b/core/util.runtime/src/org/jetbrains/kotlin/storage/LockBasedStorageManager.java index dd2f785e203..d25c2f731d2 100644 --- a/core/util.runtime/src/org/jetbrains/kotlin/storage/LockBasedStorageManager.java +++ b/core/util.runtime/src/org/jetbrains/kotlin/storage/LockBasedStorageManager.java @@ -64,8 +64,8 @@ public class LockBasedStorageManager implements StorageManager { }; @NotNull - public static LockBasedStorageManager createWithExceptionHandling(@NotNull ExceptionHandlingStrategy exceptionHandlingStrategy) { - return new LockBasedStorageManager(exceptionHandlingStrategy); + public static LockBasedStorageManager createWithExceptionHandling(@NotNull String debugText, @NotNull ExceptionHandlingStrategy exceptionHandlingStrategy) { + return new LockBasedStorageManager(debugText, exceptionHandlingStrategy, new ReentrantLock()); } protected final Lock lock; @@ -82,16 +82,8 @@ public class LockBasedStorageManager implements StorageManager { this.debugText = debugText; } - public LockBasedStorageManager() { - this(defaultDebugName(), ExceptionHandlingStrategy.THROW, new ReentrantLock()); - } - - protected LockBasedStorageManager(@NotNull ExceptionHandlingStrategy exceptionHandlingStrategy) { - this(defaultDebugName(), exceptionHandlingStrategy, new ReentrantLock()); - } - - private static String defaultDebugName() { - return ""; + public LockBasedStorageManager(String debugText) { + this(debugText, ExceptionHandlingStrategy.THROW, new ReentrantLock()); } @Override @@ -526,14 +518,6 @@ public class LockBasedStorageManager implements StorageManager { } } - @NotNull - public static LockBasedStorageManager createDelegatingWithSameLock( - @NotNull LockBasedStorageManager base, - @NotNull ExceptionHandlingStrategy newStrategy - ) { - return new LockBasedStorageManager(defaultDebugName(), newStrategy, base.lock); - } - @NotNull private static T sanitizeStackTrace(@NotNull T throwable) { StackTraceElement[] stackTrace = throwable.getStackTrace(); diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/globalContextUtils.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/globalContextUtils.kt index 9b2083ca425..d6f65ba1ce7 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/globalContextUtils.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/globalContextUtils.kt @@ -11,7 +11,10 @@ import org.jetbrains.kotlin.storage.LockBasedStorageManager internal fun GlobalContextImpl.contextWithNewLockAndCompositeExceptionTracker(): GlobalContextImpl { val newExceptionTracker = CompositeExceptionTracker(this.exceptionTracker) - return GlobalContextImpl(LockBasedStorageManager.createWithExceptionHandling(newExceptionTracker), newExceptionTracker) + return GlobalContextImpl( + LockBasedStorageManager.createWithExceptionHandling("GlobalContextUtils", newExceptionTracker), + newExceptionTracker + ) } private class CompositeExceptionTracker(val delegate: ExceptionTracker) : ExceptionTracker() { diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/config/JsConfig.java b/js/js.frontend/src/org/jetbrains/kotlin/js/config/JsConfig.java index fa34ec70455..8caa2edb461 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/config/JsConfig.java +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/config/JsConfig.java @@ -55,7 +55,7 @@ public class JsConfig { private final Project project; private final CompilerConfiguration configuration; - private final LockBasedStorageManager storageManager = new LockBasedStorageManager(); + private final LockBasedStorageManager storageManager = new LockBasedStorageManager("JsConfig"); private final List metadata = new SmartList<>(); private final List friends = new SmartList<>();