Optimization: do not read data from input streams, use contents cached in VFS
This commit is contained in:
+2
-2
@@ -134,7 +134,7 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
||||
private List<AnnotationDescriptor> loadClassAnnotationsFromFile(@NotNull VirtualFile virtualFile) throws IOException {
|
||||
final List<AnnotationDescriptor> result = new ArrayList<AnnotationDescriptor>();
|
||||
|
||||
new ClassReader(virtualFile.getInputStream()).accept(new ClassVisitor(Opcodes.ASM4) {
|
||||
new ClassReader(virtualFile.contentsToByteArray()).accept(new ClassVisitor(Opcodes.ASM4) {
|
||||
@Override
|
||||
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
|
||||
return resolveAnnotation(desc, result);
|
||||
@@ -298,7 +298,7 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
||||
final Map<MemberSignature, List<AnnotationDescriptor>> memberAnnotations =
|
||||
new HashMap<MemberSignature, List<AnnotationDescriptor>>();
|
||||
|
||||
new ClassReader(file.getInputStream()).accept(new ClassVisitor(Opcodes.ASM4) {
|
||||
new ClassReader(file.contentsToByteArray()).accept(new ClassVisitor(Opcodes.ASM4) {
|
||||
@Override
|
||||
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
|
||||
final MemberSignature methodSignature = MemberSignature.fromMethodNameAndDesc(name, desc);
|
||||
|
||||
+5
-11
@@ -16,7 +16,6 @@ import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -27,16 +26,11 @@ public final class KotlinClassFileHeader {
|
||||
@NotNull
|
||||
public static KotlinClassFileHeader readKotlinHeaderFromClassFile(@NotNull VirtualFile virtualFile) {
|
||||
try {
|
||||
InputStream inputStream = virtualFile.getInputStream();
|
||||
try {
|
||||
ClassReader reader = new ClassReader(inputStream);
|
||||
KotlinClassFileHeader classFileData = new KotlinClassFileHeader();
|
||||
reader.accept(classFileData.new ReadDataFromAnnotationVisitor(), SKIP_CODE | SKIP_FRAMES | SKIP_DEBUG);
|
||||
return classFileData;
|
||||
}
|
||||
finally {
|
||||
inputStream.close();
|
||||
}
|
||||
byte[] bytes = virtualFile.contentsToByteArray();
|
||||
ClassReader reader = new ClassReader(bytes);
|
||||
KotlinClassFileHeader classFileData = new KotlinClassFileHeader();
|
||||
reader.accept(classFileData.new ReadDataFromAnnotationVisitor(), SKIP_CODE | SKIP_FRAMES | SKIP_DEBUG);
|
||||
return classFileData;
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
|
||||
Reference in New Issue
Block a user