ThrowingInsnpublic final class ThrowingInsn extends Insn Instruction which possibly throws. The {@code successors} list in the
basic block an instance of this class is inside corresponds in-order to
the list of exceptions handled by this instruction, with the
no-exception case appended as the final target. |
Fields Summary |
---|
private final com.android.dx.rop.type.TypeList | catches{@code non-null;} list of exceptions caught |
Constructors Summary |
---|
public ThrowingInsn(Rop opcode, SourcePosition position, RegisterSpecList sources, com.android.dx.rop.type.TypeList catches)Constructs an instance.
super(opcode, position, null, sources);
if (opcode.getBranchingness() != Rop.BRANCH_THROW) {
throw new IllegalArgumentException("bogus branchingness");
}
if (catches == null) {
throw new NullPointerException("catches == null");
}
this.catches = catches;
|
Methods Summary |
---|
public void | accept(Visitor visitor){@inheritDoc}
visitor.visitThrowingInsn(this);
| public com.android.dx.rop.type.TypeList | getCatches(){@inheritDoc}
return catches;
| public java.lang.String | getInlineString(){@inheritDoc}
return toCatchString(catches);
| public static java.lang.String | toCatchString(com.android.dx.rop.type.TypeList catches)Gets the string form of a register spec list to be used as a catches
list.
StringBuffer sb = new StringBuffer(100);
sb.append("catch");
int sz = catches.size();
for (int i = 0; i < sz; i++) {
sb.append(" ");
sb.append(catches.getType(i).toHuman());
}
return sb.toString();
| public Insn | withAddedCatch(com.android.dx.rop.type.Type type){@inheritDoc}
return new ThrowingInsn(getOpcode(), getPosition(),
getSources(), catches.withAddedType(type));
| public Insn | withNewRegisters(RegisterSpec result, RegisterSpecList sources){@inheritDoc}
return new ThrowingInsn(getOpcode(), getPosition(),
sources,
catches);
| public Insn | withRegisterOffset(int delta){@inheritDoc}
return new ThrowingInsn(getOpcode(), getPosition(),
getSources().withOffset(delta),
catches);
|
|