K2: Introduce FirCachingCompositeSymbolProvider
The main idea is pre-computing the sets of names that might be met there, that helps to decrease the sizes of the backing maps (by avoiding irrelevant keys) Totally, this branch with previous commits speeds up MT Full Kotlin approximately on 3 seconds (~5%)
This commit is contained in:
committed by
Space Team
parent
6705d211a6
commit
9c988fd8d8
+10
@@ -77,6 +77,12 @@ internal class LLFirModuleWithDependenciesSymbolProvider(
|
||||
getPackageWithoutDependencies(fqName)
|
||||
?: dependencyProvider.getPackage(fqName)
|
||||
|
||||
override fun computePackageSetWithTopLevelCallables(): Set<String>? = null
|
||||
|
||||
override fun knownTopLevelClassifiersInPackage(packageFqName: FqName): Set<String>? = null
|
||||
|
||||
override fun computeCallableNamesInPackage(packageFqName: FqName): Set<Name>? = null
|
||||
|
||||
|
||||
fun getPackageWithoutDependencies(fqName: FqName): FqName? =
|
||||
providers.firstNotNullOfOrNull { it.getPackage(fqName) }
|
||||
@@ -150,6 +156,10 @@ internal abstract class LLFirDependentModuleProviders(
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Consider having proper implementations for sake of optimizations
|
||||
override fun computePackageSetWithTopLevelCallables(): Set<String>? = null
|
||||
override fun knownTopLevelClassifiersInPackage(packageFqName: FqName): Set<String>? = null
|
||||
override fun computeCallableNamesInPackage(packageFqName: FqName): Set<Name>? = null
|
||||
|
||||
private fun <S : FirCallableSymbol<*>> addNewSymbolsConsideringJvmFacades(
|
||||
destination: MutableList<S>,
|
||||
|
||||
+5
@@ -113,6 +113,11 @@ internal class LLFirProvider(
|
||||
override fun getPackage(fqName: FqName): FqName? =
|
||||
providerHelper.getPackage(fqName)
|
||||
|
||||
// TODO: Consider having proper implementations for sake of optimizations
|
||||
override fun computePackageSetWithTopLevelCallables(): Set<String>? = null
|
||||
override fun knownTopLevelClassifiersInPackage(packageFqName: FqName): Set<String>? = null
|
||||
override fun computeCallableNamesInPackage(packageFqName: FqName): Set<Name>? = null
|
||||
|
||||
override fun getClassLikeSymbolByClassId(classId: ClassId): FirClassLikeSymbol<*>? {
|
||||
return getFirClassifierByFqName(classId)?.symbol
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user