Move caching of deserialized classes to new component ClassDeserializer
Drop AbstractDescriptorFinder
This commit is contained in:
+1
-3
@@ -98,9 +98,7 @@ public class LazyJavaPackageFragmentProvider(
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName) = getPackageFragment(fqName)?.getMemberScope()?.getSubPackages().orEmpty()
|
||||
|
||||
internal val resolveKotlinBinaryClass = c.storageManager.createMemoizedFunctionWithNullableValues {
|
||||
(kotlinClass: KotlinJvmBinaryClass) -> c.deserializedDescriptorResolver.resolveClass(kotlinClass)
|
||||
}
|
||||
fun resolveKotlinBinaryClass(kotlinClass: KotlinJvmBinaryClass) = c.deserializedDescriptorResolver.resolveClassCached(kotlinClass)
|
||||
|
||||
fun getClass(javaClass: JavaClass): ClassDescriptor? = c.javaClassResolver.resolveClass(javaClass)
|
||||
|
||||
|
||||
+13
@@ -19,7 +19,9 @@ package org.jetbrains.jet.lang.resolve.kotlin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.descriptors.serialization.ClassData;
|
||||
import org.jetbrains.jet.descriptors.serialization.ClassId;
|
||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil;
|
||||
import org.jetbrains.jet.descriptors.serialization.NameResolver;
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedClassDescriptor;
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedPackageMemberScope;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
@@ -57,6 +59,17 @@ public final class DeserializedDescriptorResolver {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@Nullable
|
||||
public ClassDescriptor resolveClassCached(@NotNull KotlinJvmBinaryClass kotlinClass) {
|
||||
String[] data = readData(kotlinClass, CLASS);
|
||||
if (data != null) {
|
||||
ClassData classData = JavaProtoBufUtil.readClassDataFrom(data);
|
||||
NameResolver nameResolver = classData.getNameResolver();
|
||||
ClassId classId = nameResolver.getClassId(classData.getClassProto().getFqName());
|
||||
return context.getClassDeserializer().deserializeClass(classId);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public JetScope createKotlinPackageScope(@NotNull PackageFragmentDescriptor descriptor, @NotNull KotlinJvmBinaryClass kotlinClass) {
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ public class JavaDescriptorFinder(
|
||||
val lazyJavaPackageFragmentProvider = javaDescriptorResolver.getPackageFragmentProvider() as LazyJavaPackageFragmentProvider
|
||||
val c = lazyJavaPackageFragmentProvider.c
|
||||
val kotlinJvmBinaryClass = c.kotlinClassFinder.findKotlinClass(kotlinFqNameToJavaFqName(classId.asSingleFqName())) ?: return null
|
||||
return lazyJavaPackageFragmentProvider.resolveKotlinBinaryClass(kotlinJvmBinaryClass)
|
||||
return c.deserializedDescriptorResolver.resolveClass(kotlinJvmBinaryClass)
|
||||
}
|
||||
|
||||
override fun getClassNames(packageName: FqName): Collection<Name> {
|
||||
|
||||
Reference in New Issue
Block a user