Optimize declaration providers for case of non-existing packages
Avoid creating memoized function nodes when the value is obviously null Otherwise, it may lead to about 25M retained by empty concurrent hashmap nodes
This commit is contained in:
+5
-2
@@ -57,7 +57,10 @@ class PluginDeclarationProviderFactory(
|
||||
}
|
||||
}
|
||||
|
||||
private fun packageExists(name: FqName): Boolean {
|
||||
override fun packageExists(fqName: FqName) =
|
||||
fileBasedDeclarationProviderFactory.packageExists(fqName) || stubBasedPackageExists(fqName)
|
||||
|
||||
private fun stubBasedPackageExists(name: FqName): Boolean {
|
||||
return if (moduleInfo is ModuleSourceInfo)
|
||||
project.service<PerModulePackageCacheService>().packageExists(name, moduleInfo)
|
||||
else
|
||||
@@ -65,7 +68,7 @@ class PluginDeclarationProviderFactory(
|
||||
}
|
||||
|
||||
private fun getStubBasedPackageMemberDeclarationProvider(name: FqName): PackageMemberDeclarationProvider? {
|
||||
if (!packageExists(name)) return null
|
||||
if (!stubBasedPackageExists(name)) return null
|
||||
|
||||
return StubBasedPackageMemberDeclarationProvider(name, project, indexedFilesScope)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user