diff options
author | Roman Shevchenko <roman.shevchenko@jetbrains.com> | 2014-09-04 19:02:10 +0400 |
---|---|---|
committer | Roman Shevchenko <roman.shevchenko@jetbrains.com> | 2014-09-04 19:02:10 +0400 |
commit | 4e79d160ca382125d76bab3f1d18414d6308d614 (patch) | |
tree | b0103e396373c3cb347ce5265411e03b325493e5 /src | |
parent | 686b5abef9c269a726897c6992d0ea2abea79b04 (diff) | |
download | fernflower-4e79d160ca382125d76bab3f1d18414d6308d614.tar fernflower-4e79d160ca382125d76bab3f1d18414d6308d614.tar.gz fernflower-4e79d160ca382125d76bab3f1d18414d6308d614.tar.lz fernflower-4e79d160ca382125d76bab3f1d18414d6308d614.tar.xz fernflower-4e79d160ca382125d76bab3f1d18414d6308d614.zip |
java-decompiler: code attributes reading restored
Diffstat (limited to 'src')
-rw-r--r-- | src/org/jetbrains/java/decompiler/struct/StructMethod.java | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/org/jetbrains/java/decompiler/struct/StructMethod.java b/src/org/jetbrains/java/decompiler/struct/StructMethod.java index b055df6..3ca4a32 100644 --- a/src/org/jetbrains/java/decompiler/struct/StructMethod.java +++ b/src/org/jetbrains/java/decompiler/struct/StructMethod.java @@ -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>(); |