Methods Summary |
---|
public int | codeSize(){@inheritDoc}
return 2;
|
public java.lang.String | insnArgString(com.android.dx.dex.code.DalvInsn insn){@inheritDoc}
RegisterSpecList regs = insn.getRegisters();
CstLiteralBits value = (CstLiteralBits) ((CstInsn) insn).getConstant();
return regs.get(0).regString() + ", " + literalBitsString(value);
|
public java.lang.String | insnCommentString(com.android.dx.dex.code.DalvInsn insn, boolean noteIndices){@inheritDoc}
RegisterSpecList regs = insn.getRegisters();
CstLiteralBits value = (CstLiteralBits) ((CstInsn) insn).getConstant();
return
literalBitsComment(value,
(regs.get(0).getCategory() == 1) ? 32 : 64);
|
public boolean | isCompatible(com.android.dx.dex.code.DalvInsn insn){@inheritDoc}
RegisterSpecList regs = insn.getRegisters();
if (!((insn instanceof CstInsn) &&
(regs.size() == 1) &&
unsignedFitsInByte(regs.get(0).getReg()))) {
return false;
}
CstInsn ci = (CstInsn) insn;
Constant cst = ci.getConstant();
if (!(cst instanceof CstLiteralBits)) {
return false;
}
CstLiteralBits cb = (CstLiteralBits) cst;
// Where the high bits are depends on the category of the target.
if (regs.get(0).getCategory() == 1) {
int bits = cb.getIntBits();
return ((bits & 0xffff) == 0);
} else {
long bits = cb.getLongBits();
return ((bits & 0xffffffffffffL) == 0);
}
|
public com.android.dx.dex.code.InsnFormat | nextUp(){@inheritDoc}
return Form31i.THE_ONE;
|
public void | writeTo(com.android.dx.util.AnnotatedOutput out, com.android.dx.dex.code.DalvInsn insn){@inheritDoc}
RegisterSpecList regs = insn.getRegisters();
CstLiteralBits cb = (CstLiteralBits) ((CstInsn) insn).getConstant();
short bits;
// Where the high bits are depends on the category of the target.
if (regs.get(0).getCategory() == 1) {
bits = (short) (cb.getIntBits() >>> 16);
} else {
bits = (short) (cb.getLongBits() >>> 48);
}
write(out, opcodeUnit(insn, regs.get(0).getReg()), bits);
|