Skip to content

Commit ad5e29a

Browse files
BlaBlaHumanSpace Team
authored and
Space Team
committed
[Analysis API] Add caching of built-in files in BuiltinsVirtualFileProviderBaseImpl
As the set of built-in files is the same for the whole application, this set can easily be cached. ^KT-77135
1 parent 99da6d3 commit ad5e29a

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

analysis/decompiled/decompiler-to-psi/src/org/jetbrains/kotlin/analysis/decompiler/psi/BuiltinsVirtualFileProvider.kt

+10-7
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,22 @@ abstract class BuiltinsVirtualFileProviderBaseImpl : BuiltinsVirtualFileProvider
3939
}
4040

4141
override fun createBuiltinsScope(project: Project): GlobalSearchScope {
42-
val builtInFiles = getBuiltinVirtualFiles()
43-
return GlobalSearchScope.filesScope(project, builtInFiles)
42+
return GlobalSearchScope.filesScope(project, builtinVirtualFilesCached)
4443
}
4544

4645
protected abstract fun findVirtualFile(url: URL): VirtualFile?
4746

48-
override fun getBuiltinVirtualFiles(): Set<VirtualFile> = builtInUrls.mapNotNullTo(mutableSetOf()) { url ->
49-
val file = findVirtualFile(url)
50-
if (file == null) {
51-
logger<BuiltinsVirtualFileProvider>().warn("VirtualFile not found for builtin $url")
47+
private val builtinVirtualFilesCached: Set<VirtualFile> by lazy(LazyThreadSafetyMode.PUBLICATION) {
48+
builtInUrls.mapNotNullTo(mutableSetOf()) { url ->
49+
val file = findVirtualFile(url)
50+
if (file == null) {
51+
logger<BuiltinsVirtualFileProvider>().warn("VirtualFile not found for builtin $url")
52+
}
53+
file
5254
}
53-
file
5455
}
56+
57+
override fun getBuiltinVirtualFiles(): Set<VirtualFile> = builtinVirtualFilesCached
5558
}
5659

5760
class BuiltinsVirtualFileProviderCliImpl : BuiltinsVirtualFileProviderBaseImpl() {

0 commit comments

Comments
 (0)