Move caching of deserialized classes to new component ClassDeserializer

Drop AbstractDescriptorFinder
This commit is contained in:
Pavel V. Talanov
2014-06-16 15:00:57 +04:00
parent 6683173f67
commit 53337f793b
8 changed files with 72 additions and 91 deletions
@@ -58,7 +58,7 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
private val moduleDescriptor =
ModuleDescriptorImpl(Name.special("<module for building decompiled sources>"), listOf(), PlatformToKotlinClassMap.EMPTY)
override fun resolveTopLevelClass(classFqName: FqName) = classes(classFqName.toClassId())
override fun resolveTopLevelClass(classFqName: FqName) = deserializationContext.classDeserializer.deserializeClass(classFqName.toClassId())
override fun resolveDeclarationsInPackage(packageFqName: FqName): Collection<DeclarationDescriptor> {
assert(packageFqName == directoryPackageFqName, "Was called for $packageFqName but only $directoryPackageFqName is expected.")
@@ -95,10 +95,6 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
}
}
private val storageManager = LockBasedStorageManager.NO_LOCKS
private val classes = storageManager.createMemoizedFunctionWithNullableValues {
(classId: ClassId) ->
resolveClassByClassId(classId)
}
private val deserializerStorage = DescriptorDeserializersStorage(storageManager);
{
@@ -123,7 +119,7 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
private val descriptorFinder = object : DescriptorFinder {
override fun findClass(classId: ClassId): ClassDescriptor? {
return classes(classId)
return resolveClassByClassId(classId)
}
override fun getClassNames(packageName: FqName): Collection<Name> {