From 8794005234c45e9e896061dab2bac5633afc61f1 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Mon, 13 Feb 2017 13:02:49 +0300 Subject: [PATCH] JvmPlatform#getDefaultImports: avoid recomputing JvmBuiltins We need to use LockBasedStorageManager() (instead of NO_LOCKS) since getDefaultImports() can be called concurrently in certain scenarios --- .../org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt index 7c0be6aeab3..f675a2b851d 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt @@ -25,6 +25,8 @@ import org.jetbrains.kotlin.storage.LockBasedStorageManager import java.util.* object JvmPlatform : TargetPlatform("JVM") { + private val builtIns by lazy(LazyThreadSafetyMode.PUBLICATION) { JvmBuiltIns(LockBasedStorageManager()) } + override fun getDefaultImports(languageVersionSettings: LanguageVersionSettings): List = ArrayList().apply { addAll(Default.getDefaultImports(languageVersionSettings)) @@ -37,7 +39,6 @@ object JvmPlatform : TargetPlatform("JVM") { } } - val builtIns = JvmBuiltIns(LockBasedStorageManager.NO_LOCKS) for (builtinPackageFragment in builtIns.builtInsPackageFragmentsImportedByDefault) { addAllClassifiersFromScope(builtinPackageFragment.getMemberScope()) }