java-decompiler: code attributes reading restored
This commit is contained in:
@@ -18,7 +18,6 @@ package org.jetbrains.java.decompiler.struct;
|
||||
import org.jetbrains.java.decompiler.code.*;
|
||||
import org.jetbrains.java.decompiler.struct.attr.StructGeneralAttribute;
|
||||
import org.jetbrains.java.decompiler.struct.consts.ConstantPool;
|
||||
import org.jetbrains.java.decompiler.struct.lazy.LazyLoader;
|
||||
import org.jetbrains.java.decompiler.util.DataInputFullStream;
|
||||
import org.jetbrains.java.decompiler.util.VBStyleCollection;
|
||||
|
||||
@@ -55,7 +54,7 @@ public class StructMethod extends StructMember {
|
||||
private int codeFullLength = 0;
|
||||
private InstructionSequence seq;
|
||||
private boolean expanded = false;
|
||||
|
||||
private VBStyleCollection<StructGeneralAttribute, String> codeAttributes;
|
||||
|
||||
public StructMethod(DataInputFullStream in, StructClass clStruct) throws IOException {
|
||||
classStruct = clStruct;
|
||||
@@ -70,6 +69,10 @@ public class StructMethod extends StructMember {
|
||||
descriptor = values[1];
|
||||
|
||||
attributes = readAttributes(in, pool);
|
||||
if (codeAttributes != null) {
|
||||
attributes.addAllWithKey(codeAttributes);
|
||||
codeAttributes = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -87,12 +90,12 @@ public class StructMethod extends StructMember {
|
||||
localVariables = in.readUnsignedShort();
|
||||
codeLength = in.readInt();
|
||||
in.discard(codeLength);
|
||||
int exc_length = in.readUnsignedShort();
|
||||
in.discard(exc_length * 8);
|
||||
codeFullLength = codeLength + exc_length * 8 + 2;
|
||||
int excLength = in.readUnsignedShort();
|
||||
in.discard(excLength * 8);
|
||||
codeFullLength = codeLength + excLength * 8 + 2;
|
||||
}
|
||||
|
||||
LazyLoader.skipAttributes(in);
|
||||
codeAttributes = readAttributes(in, pool);
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -115,6 +118,7 @@ public class StructMethod extends StructMember {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("AssignmentToForLoopParameter")
|
||||
private InstructionSequence parseBytecode(DataInputFullStream in, int length, ConstantPool pool) throws IOException {
|
||||
VBStyleCollection<Instruction, Integer> instructions = new VBStyleCollection<Instruction, Integer>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user