/** Create branch instruction by given opcode, except LOOKUPSWITCH and TABLESWITCH.
* For those you should use the SWITCH compound instruction.
*/
public static BranchInstruction createBranchInstruction(short opcode, InstructionHandle target) {
switch(opcode) {
case Constants.IFEQ: return new IFEQ(target);
case Constants.IFNE: return new IFNE(target);
case Constants.IFLT: return new IFLT(target);
case Constants.IFGE: return new IFGE(target);
case Constants.IFGT: return new IFGT(target);
case Constants.IFLE: return new IFLE(target);
case Constants.IF_ICMPEQ: return new IF_ICMPEQ(target);
case Constants.IF_ICMPNE: return new IF_ICMPNE(target);
case Constants.IF_ICMPLT: return new IF_ICMPLT(target);
case Constants.IF_ICMPGE: return new IF_ICMPGE(target);
case Constants.IF_ICMPGT: return new IF_ICMPGT(target);
case Constants.IF_ICMPLE: return new IF_ICMPLE(target);
case Constants.IF_ACMPEQ: return new IF_ACMPEQ(target);
case Constants.IF_ACMPNE: return new IF_ACMPNE(target);
case Constants.GOTO: return new GOTO(target);
case Constants.JSR: return new JSR(target);
case Constants.IFNULL: return new IFNULL(target);
case Constants.IFNONNULL: return new IFNONNULL(target);
case Constants.GOTO_W: return new GOTO_W(target);
case Constants.JSR_W: return new JSR_W(target);
default:
throw new RuntimeException("Invalid opcode: " + opcode);
}
}