decompiler: removeLast helper to avoid possible errors

master
Egor.Ushakov 9 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);
}
public void removeLast() {
if (!collinstr.isEmpty()) {
collinstr.remove(collinstr.size() - 1);
}
}
public Instruction getCurrentInstr() {
return collinstr.get(pointer);
}

@ -252,7 +252,7 @@ public class DeadCodeHelper {
Instruction instr = block.getLastInstruction();
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 (finallytype == 0 || finallytype == 2) {
seqPattern.removeInstruction(seqPattern.length() - 1);
seqPattern.removeLast();
}
if (finallytype == 2) {
seqPattern.removeInstruction(seqPattern.length() - 1);
seqPattern.removeLast();
}
}
}
@ -1078,11 +1078,11 @@ public class FinallyProcessor {
if ((blocktype & 2) > 0) { // last
if (finallytype == 2 || finallytype == 0) {
seq.removeInstruction(seq.length() - 1);
seq.removeLast();
}
if (finallytype == 2) { // astore
seq.removeInstruction(seq.length() - 1);
seq.removeLast();
}
}
}

Loading…
Cancel
Save