decompiler: removeLast helper to avoid possible errors

master
Egor.Ushakov 10 years ago
parent 5770d25e59
commit ce31439c20
  1. 6
      src/org/jetbrains/java/decompiler/code/InstructionSequence.java
  2. 2
      src/org/jetbrains/java/decompiler/modules/code/DeadCodeHelper.java
  3. 8
      src/org/jetbrains/java/decompiler/modules/decompiler/FinallyProcessor.java

@ -81,6 +81,12 @@ public abstract class InstructionSequence {
collinstr.remove(index); collinstr.remove(index);
} }
public void removeLast() {
if (!collinstr.isEmpty()) {
collinstr.remove(collinstr.size() - 1);
}
}
public Instruction getCurrentInstr() { public Instruction getCurrentInstr() {
return collinstr.get(pointer); return collinstr.get(pointer);
} }

@ -252,7 +252,7 @@ public class DeadCodeHelper {
Instruction instr = block.getLastInstruction(); Instruction instr = block.getLastInstruction();
if (instr != null && instr.opcode == CodeConstants.opc_goto) { if (instr != null && instr.opcode == CodeConstants.opc_goto) {
block.getSeq().removeInstruction(block.getSeq().length() - 1); block.getSeq().removeLast();
} }
} }

@ -863,11 +863,11 @@ public class FinallyProcessor {
if ((type & 2) > 0) { // last if ((type & 2) > 0) { // last
if (finallytype == 0 || finallytype == 2) { if (finallytype == 0 || finallytype == 2) {
seqPattern.removeInstruction(seqPattern.length() - 1); seqPattern.removeLast();
} }
if (finallytype == 2) { if (finallytype == 2) {
seqPattern.removeInstruction(seqPattern.length() - 1); seqPattern.removeLast();
} }
} }
} }
@ -1078,11 +1078,11 @@ public class FinallyProcessor {
if ((blocktype & 2) > 0) { // last if ((blocktype & 2) > 0) { // last
if (finallytype == 2 || finallytype == 0) { if (finallytype == 2 || finallytype == 0) {
seq.removeInstruction(seq.length() - 1); seq.removeLast();
} }
if (finallytype == 2) { // astore if (finallytype == 2) { // astore
seq.removeInstruction(seq.length() - 1); seq.removeLast();
} }
} }
} }

Loading…
Cancel
Save