Introduce cache for KotlinBuiltins::builtInClassesByName
There are a lot of places requesting nothing/any/.. instances and just asking the scopes isn't very effecient: see org.jetbrains.kotlin.builtins.KotlinBuiltIns#createPackage having ChainedMemberScope and a `map` call
This commit is contained in:
@@ -79,6 +79,7 @@ public abstract class KotlinBuiltIns {
|
||||
private final NotNullLazyValue<PackageFragments> packageFragments;
|
||||
|
||||
private final MemoizedFunctionToNotNull<Integer, ClassDescriptor> suspendFunctionClasses;
|
||||
private final MemoizedFunctionToNotNull<Name, ClassDescriptor> builtInClassesByName;
|
||||
|
||||
private final StorageManager storageManager;
|
||||
|
||||
@@ -135,6 +136,13 @@ public abstract class KotlinBuiltIns {
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
this.builtInClassesByName = storageManager.createMemoizedFunction(new Function1<Name, ClassDescriptor>() {
|
||||
@Override
|
||||
public ClassDescriptor invoke(Name name) {
|
||||
return getBuiltInClassByName(name, getBuiltInsPackageFragment());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void createBuiltInsModule() {
|
||||
@@ -415,7 +423,7 @@ public abstract class KotlinBuiltIns {
|
||||
|
||||
@NotNull
|
||||
public ClassDescriptor getBuiltInClassByName(@NotNull Name simpleName) {
|
||||
return getBuiltInClassByName(simpleName, getBuiltInsPackageFragment());
|
||||
return builtInClassesByName.invoke(simpleName);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
Reference in New Issue
Block a user