Methods Summary |
---|
public abstract void | accept(com.android.dx.ssa.SsaInsn$Visitor v)accepts a visitor
|
public abstract boolean | canThrow()
|
public void | changeResultReg(int reg)Changes the result register if this insn has a result.
Used during renaming.
if (result != null) {
result = result.withReg(reg);
}
|
public com.android.dx.ssa.SsaInsn | clone(){@inheritDoc}
try {
return (SsaInsn)super.clone();
} catch (CloneNotSupportedException ex) {
throw new RuntimeException ("unexpected", ex);
}
|
public SsaBasicBlock | getBlock()Gets the block to which this insn instance belongs.
return block;
|
public RegisterSpec | getLocalAssignment()Gets the spec of a local variable assignment that occurs at this
instruction, or null if no local variable assignment occurs. This
may be the result register, or for mark-local insns
it may be the source.
if (result != null && result.getLocalItem() != null) {
return result;
}
return null;
|
public abstract Rop | getOpcode()Returns the Rop opcode for this insn, or null if this is a phi insn
TODO move this up into NormalSsaInsn
|
public abstract Insn | getOriginalRopInsn()Returns the original Rop insn for this insn, or null if this is
a phi insn.
TODO move this up into NormalSsaInsn
|
public RegisterSpec | getResult()Like {@link com.android.dx.rop.code.Insn getResult()}.
return result;
|
public abstract RegisterSpecList | getSources()Like {@link com.android.dx.rop.code.Insn getSources()}.
|
public abstract boolean | hasSideEffect()Returns true if this insn is considered to have a side effect beyond
that of assigning to the result reg.
|
public boolean | isMoveException()
return false;
|
public boolean | isNormalMoveInsn()
return false;
|
public abstract boolean | isPhiOrMove()
|
public boolean | isRegASource(int reg)Indicates whether the specified register is amongst the registers
used as sources for this instruction.
return null != getSources().specForRegister(reg);
|
public boolean | isResultReg(int reg)is the specified reg the result reg?
return result != null && result.getReg() == reg;
|
public static com.android.dx.ssa.SsaInsn | makeFromRop(Insn insn, SsaBasicBlock block)Makes a new SSA insn form a ROP insn
return new NormalSsaInsn(insn, block);
|
public final void | mapRegisters(RegisterMapper mapper)Map registers after register allocation.
RegisterSpec oldResult = result;
result = mapper.map(result);
block.getParent().updateOneDefinition(this, oldResult);
mapSourceRegisters(mapper);
|
public abstract void | mapSourceRegisters(RegisterMapper mapper)Maps only source registers.
|
public final void | setResultLocal(LocalItem local)Sets the local association for the result of this insn.
This is sometimes updated during the SsaRenamer process.
LocalItem oldItem = result.getLocalItem();
if (local != oldItem && (local == null
|| !local.equals(result.getLocalItem()))) {
result = RegisterSpec.makeLocalOptional(
result.getReg(), result.getType(), local);
}
|
public abstract Insn | toRopInsn()Transform back to ROP form.
TODO move this up into NormalSsaInsn
|