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. This is 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 com.android.dx.rop.code.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 {@code mark-local} insns
it may be the source.
if (result != null && result.getLocalItem() != null) {
return result;
}
return null;
|
public abstract com.android.dx.rop.code.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 com.android.dx.rop.code.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 com.android.dx.rop.code.RegisterSpec | getResult()Like {@link com.android.dx.rop.code.Insn getResult()}.
return result;
|
public abstract com.android.dx.rop.code.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)Returns whether or not the specified reg is the result reg.
return result != null && result.getReg() == reg;
|
public static com.android.dx.ssa.SsaInsn | makeFromRop(com.android.dx.rop.code.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.
|
protected void | setResult(com.android.dx.rop.code.RegisterSpec result)Set the result register.
if (result == null) {
throw new NullPointerException("result == null");
}
this.result = result;
|
public final void | setResultLocal(com.android.dx.rop.code.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 com.android.dx.rop.code.Insn | toRopInsn()Transform back to ROP form.
TODO: Move this up into NormalSsaInsn.
|