| Package | Description |
|---|---|
| com.android.dx.cf.code |
Implementation of classes having to do with Java simulation, such as
is needed for verification or stack-to-register conversion.
|
| com.android.dx.dex.code | |
| com.android.dx.rop.code |
Classes relating to a register-based opcode system.
|
| com.android.dx.ssa | |
| com.android.dx.ssa.back |
| Modifier and Type | Method and Description |
|---|---|
protected RegisterSpec |
BaseMachine.getLocalTarget(boolean isMove)
Gets the target local register spec of the current operation, if any.
|
| Modifier and Type | Method and Description |
|---|---|
void |
LocalsArraySet.set(RegisterSpec spec)
Sets the type for the local indicated by the given register spec
to that register spec (which includes type and optional name
information).
|
abstract void |
LocalsArray.set(RegisterSpec spec)
Sets the type for the local indicated by the given register spec
to that register spec (which includes type and optional name
information).
|
void |
OneLocalsArray.set(RegisterSpec spec)
Sets the type for the local indicated by the given register spec
to that register spec (which includes type and optional name
information).
|
| Modifier and Type | Method and Description |
|---|---|
RegisterSpec |
LocalStart.getLocal()
Gets the register spec representing the local variable introduced
by this instance.
|
RegisterSpec |
LocalList.Entry.getRegisterSpec()
Gets the RegisterSpec of the register holding the variable.
|
| Modifier and Type | Method and Description |
|---|---|
void |
LocalList.MakeState.endLocal(int address,
RegisterSpec endedLocal)
Ends a local at the given address, using the disposition
END_SIMPLY. |
void |
LocalList.MakeState.endLocal(int address,
RegisterSpec endedLocal,
LocalList.Disposition disposition)
Ends a local at the given address.
|
static java.lang.String |
LocalStart.localString(RegisterSpec spec)
Returns the local variable listing string for a single register spec.
|
static SimpleInsn |
DalvInsn.makeMove(SourcePosition position,
RegisterSpec dest,
RegisterSpec src)
Makes a move instruction, appropriate and ideal for the given arguments.
|
boolean |
LocalList.Entry.matches(RegisterSpec otherSpec)
Returns whether or not this instance matches the given spec.
|
void |
LocalList.MakeState.startLocal(int address,
RegisterSpec startedLocal)
Starts a local at the given address.
|
| Constructor and Description |
|---|
Entry(int address,
LocalList.Disposition disposition,
RegisterSpec spec)
Constructs an instance.
|
LocalStart(SourcePosition position,
RegisterSpec local)
Constructs an instance.
|
| Modifier and Type | Method and Description |
|---|---|
RegisterSpec |
RegisterSpecSet.findMatchingLocal(RegisterSpec spec)
Returns the spec in this set that's currently associated with a
given local (type, name, and signature), or
null if there is
none. |
RegisterSpec |
RegisterSpecList.get(int n)
Gets the indicated element.
|
RegisterSpec |
RegisterSpecSet.get(int reg)
Gets the element with the given register number, if any.
|
RegisterSpec |
RegisterSpecSet.get(RegisterSpec spec)
Gets the element with the same register number as the given
spec, if any.
|
RegisterSpec |
LocalVariableInfo.getAssignment(Insn insn)
Gets the named register being assigned by the given instruction, if
previously stored in this instance.
|
RegisterSpec |
Insn.getLocalAssignment()
Gets the spec of a local variable assignment that occurs at this
instruction, or null if no local variable assignment occurs.
|
RegisterSpec |
Insn.getResult()
Gets the result spec, if any.
|
RegisterSpec |
RegisterSpec.intersect(RegisterSpec other,
boolean localPrimary)
Returns an instance that is the intersection between this instance
and the given one, if any.
|
RegisterSpec |
RegisterSpecSet.localItemToSpec(LocalItem local)
Returns the spec in this set that's currently associated with a given
local (name and signature), or
null if there is none. |
static RegisterSpec |
RegisterSpec.make(int reg,
TypeBearer type)
Returns an instance for the given register number and type, with
no variable info.
|
static RegisterSpec |
RegisterSpec.make(int reg,
TypeBearer type,
LocalItem local)
Returns an instance for the given register number, type, and
variable info.
|
static RegisterSpec |
RegisterSpec.makeLocalOptional(int reg,
TypeBearer type,
LocalItem local)
Returns an instance for the given register number, type, and
variable info.
|
RegisterSpec |
RegisterSpecList.specForRegister(int reg)
Returns a RegisterSpec in this list that uses the specified register,
or null if there is none in this list.
|
RegisterSpec |
RegisterSpec.withLocalItem(LocalItem local)
Returns an instance that is identical to this one except that the
local variable is as specified in the parameter.
|
RegisterSpec |
RegisterSpec.withOffset(int delta)
Returns an instance that is identical to this one, except that the
register number is offset by the given amount.
|
RegisterSpec |
RegisterSpec.withReg(int newReg)
Returns an instance that is identical to this one, except that the
register number is replaced by the given one.
|
RegisterSpec |
RegisterSpec.withSimpleType()
Returns an instance that is identical to this one, except that
the type bearer is replaced by the actual underlying type
(thereby stripping off non-type information) with any
initialization information stripped away as well.
|
RegisterSpec |
RegisterSpec.withType(TypeBearer newType)
Returns an instance that is identical to this one, except that
the type is replaced by the given one.
|
| Modifier and Type | Method and Description |
|---|---|
void |
LocalVariableInfo.addAssignment(Insn insn,
RegisterSpec spec)
Adds an assignment association for the given instruction and
register spec.
|
int |
RegisterSpec.compareTo(RegisterSpec other)
Compares by (in priority order) register number, unwrapped type
(that is types not
TypeBearers, and local info. |
boolean |
RegisterSpec.equalsUsingSimpleType(RegisterSpec other)
Like
equals, but only consider the simple types of the
registers. |
RegisterSpec |
RegisterSpecSet.findMatchingLocal(RegisterSpec spec)
Returns the spec in this set that's currently associated with a
given local (type, name, and signature), or
null if there is
none. |
RegisterSpec |
RegisterSpecSet.get(RegisterSpec spec)
Gets the element with the same register number as the given
spec, if any.
|
boolean |
TranslationAdvice.hasConstantOperation(Rop opcode,
RegisterSpec sourceA,
RegisterSpec sourceB)
Returns an indication of whether the target can directly represent an
instruction with the given opcode operating on the given arguments,
where the last source argument is used as a constant.
|
boolean |
DexTranslationAdvice.hasConstantOperation(Rop opcode,
RegisterSpec sourceA,
RegisterSpec sourceB)
Returns an indication of whether the target can directly represent an
instruction with the given opcode operating on the given arguments,
where the last source argument is used as a constant.
|
boolean |
ConservativeTranslationAdvice.hasConstantOperation(Rop opcode,
RegisterSpec sourceA,
RegisterSpec sourceB)
Returns an indication of whether the target can directly represent an
instruction with the given opcode operating on the given arguments,
where the last source argument is used as a constant.
|
RegisterSpec |
RegisterSpec.intersect(RegisterSpec other,
boolean localPrimary)
Returns an instance that is the intersection between this instance
and the given one, if any.
|
static RegisterSpecList |
RegisterSpecList.make(RegisterSpec spec)
Makes a single-element instance.
|
static RegisterSpecList |
RegisterSpecList.make(RegisterSpec spec0,
RegisterSpec spec1)
Makes a two-element instance.
|
static RegisterSpecList |
RegisterSpecList.make(RegisterSpec spec0,
RegisterSpec spec1,
RegisterSpec spec2)
Makes a three-element instance.
|
static RegisterSpecList |
RegisterSpecList.make(RegisterSpec spec0,
RegisterSpec spec1,
RegisterSpec spec2,
RegisterSpec spec3)
Makes a four-element instance.
|
boolean |
RegisterSpec.matchesVariable(RegisterSpec other)
Like
equalsUsingSimpleType(com.android.dx.rop.code.RegisterSpec) but ignoring the register number. |
void |
RegisterSpecSet.put(RegisterSpec spec)
Puts the given spec into the set.
|
void |
RegisterSpecSet.remove(RegisterSpec toRemove)
Removes a spec from the set.
|
void |
RegisterSpecList.set(int n,
RegisterSpec spec)
Sets the element at the given index.
|
RegisterSpecList |
RegisterSpecList.withFirst(RegisterSpec spec)
Returns a new instance, which is the same as this instance,
except that it has an additional element prepended to the original.
|
Insn |
PlainCstInsn.withNewRegisters(RegisterSpec result,
RegisterSpecList sources)
Returns an instance that is just like this one, except
with new result and source registers.
|
abstract Insn |
Insn.withNewRegisters(RegisterSpec result,
RegisterSpecList sources)
Returns an instance that is just like this one, except
with new result and source registers.
|
Insn |
PlainInsn.withNewRegisters(RegisterSpec result,
RegisterSpecList sources)
Returns an instance that is just like this one, except
with new result and source registers.
|
Insn |
ThrowingInsn.withNewRegisters(RegisterSpec result,
RegisterSpecList sources)
Returns an instance that is just like this one, except
with new result and source registers.
|
Insn |
ThrowingCstInsn.withNewRegisters(RegisterSpec result,
RegisterSpecList sources)
Returns an instance that is just like this one, except
with new result and source registers.
|
Insn |
SwitchInsn.withNewRegisters(RegisterSpec result,
RegisterSpecList sources)
Returns an instance that is just like this one, except
with new result and source registers.
|
Insn |
InvokePolymorphicInsn.withNewRegisters(RegisterSpec result,
RegisterSpecList sources)
Returns an instance that is just like this one, except
with new result and source registers.
|
Insn |
FillArrayDataInsn.withNewRegisters(RegisterSpec result,
RegisterSpecList sources)
Returns an instance that is just like this one, except
with new result and source registers.
|
| Constructor and Description |
|---|
CstInsn(Rop opcode,
SourcePosition position,
RegisterSpec result,
RegisterSpecList sources,
Constant cst)
Constructs an instance.
|
Insn(Rop opcode,
SourcePosition position,
RegisterSpec result,
RegisterSpecList sources)
Constructs an instance.
|
PlainCstInsn(Rop opcode,
SourcePosition position,
RegisterSpec result,
RegisterSpecList sources,
Constant cst)
Constructs an instance.
|
PlainInsn(Rop opcode,
SourcePosition position,
RegisterSpec result,
RegisterSpec source)
Constructs a single-source instance.
|
PlainInsn(Rop opcode,
SourcePosition position,
RegisterSpec result,
RegisterSpecList sources)
Constructs an instance.
|
SwitchInsn(Rop opcode,
SourcePosition position,
RegisterSpec result,
RegisterSpecList sources,
IntList cases)
Constructs an instance.
|
| Modifier and Type | Method and Description |
|---|---|
RegisterSpec |
LocalVariableInfo.getAssignment(SsaInsn insn)
Gets the named register being assigned by the given instruction, if
previously stored in this instance.
|
RegisterSpec |
SsaInsn.getLocalAssignment()
Gets the spec of a local variable assignment that occurs at this
instruction, or null if no local variable assignment occurs.
|
RegisterSpec |
NormalSsaInsn.getLocalAssignment()
Gets the spec of a local variable assignment that occurs at this
instruction, or null if no local variable assignment occurs.
|
RegisterSpec |
SsaInsn.getResult()
Like
getResult(). |
RegisterSpec |
BasicRegisterMapper.map(RegisterSpec registerSpec) |
abstract RegisterSpec |
RegisterMapper.map(RegisterSpec registerSpec) |
| Modifier and Type | Method and Description |
|---|---|
void |
LocalVariableInfo.addAssignment(SsaInsn insn,
RegisterSpec spec)
Adds an assignment association for the given instruction and
register spec.
|
void |
SsaBasicBlock.addMoveToBeginning(RegisterSpec result,
RegisterSpec source)
Adds a move instruction after the phi insn block.
|
void |
SsaBasicBlock.addMoveToEnd(RegisterSpec result,
RegisterSpec source)
Adds a move instruction to the end of this basic block, just
before the last instruction.
|
void |
SsaBasicBlock.addPhiInsnForReg(RegisterSpec resultSpec)
Adds a phi insn to the beginning of this block.
|
void |
PhiInsn.addPhiOperand(RegisterSpec registerSpec,
SsaBasicBlock predBlock)
Adds an operand to this phi instruction.
|
void |
NormalSsaInsn.changeOneSource(int index,
RegisterSpec newSpec)
Changes one of the insn's sources.
|
boolean |
InterferenceRegisterMapper.interferes(RegisterSpec oldSpec,
int newReg)
Checks to see if old namespace reg
oldReg interferes
with what currently maps to newReg. |
boolean |
SsaMethod.isRegALocal(RegisterSpec spec)
Checks to see if the given SSA reg is ever associated with a local
local variable.
|
RegisterSpec |
BasicRegisterMapper.map(RegisterSpec registerSpec) |
abstract RegisterSpec |
RegisterMapper.map(RegisterSpec registerSpec) |
void |
PhiInsn.removePhiRegister(RegisterSpec registerSpec)
Removes all operand uses of a register from this phi instruction.
|
protected void |
SsaInsn.setResult(RegisterSpec result)
Set the result register.
|
| Constructor and Description |
|---|
PhiInsn(RegisterSpec resultReg,
SsaBasicBlock block)
Constructs a new phi insn with no operands.
|
SsaInsn(RegisterSpec result,
SsaBasicBlock block)
Constructs an instance.
|
| Modifier and Type | Method and Description |
|---|---|
protected RegisterSpec |
RegisterAllocator.getDefinitionSpecForSsaReg(int reg)
Returns the RegisterSpec of the definition of the register.
|
protected RegisterSpec |
RegisterAllocator.insertMoveBefore(SsaInsn insn,
RegisterSpec reg)
Inserts a move instruction for a specified SSA register before a
specified instruction, creating a new SSA register and adjusting the
interference graph in the process.
|
| Modifier and Type | Method and Description |
|---|---|
protected RegisterSpec |
RegisterAllocator.insertMoveBefore(SsaInsn insn,
RegisterSpec reg)
Inserts a move instruction for a specified SSA register before a
specified instruction, creating a new SSA register and adjusting the
interference graph in the process.
|
Copyright © 2020. All Rights Reserved.