JvmPlatform#getDefaultImports: avoid recomputing JvmBuiltins

We need to use LockBasedStorageManager() (instead of NO_LOCKS) since getDefaultImports()
    can be called concurrently in certain scenarios
This commit is contained in:
Pavel V. Talanov
2017-02-13 13:02:49 +03:00
parent bbe3b3cabe
commit 8794005234
@@ -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<ImportPath> = ArrayList<ImportPath>().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())
}