public final class LocalVariableInfo extends MutabilityControl
RopMethod.| Constructor and Description |
|---|
LocalVariableInfo(RopMethod method)
Constructs an instance.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addAssignment(Insn insn,
RegisterSpec spec)
Adds an assignment association for the given instruction and
register spec.
|
void |
debugDump() |
RegisterSpec |
getAssignment(Insn insn)
Gets the named register being assigned by the given instruction, if
previously stored in this instance.
|
int |
getAssignmentCount()
Gets the number of assignments recorded by this instance.
|
RegisterSpecSet |
getStarts(BasicBlock block)
Gets the register set associated with the start of the given
block.
|
RegisterSpecSet |
getStarts(int label)
Gets the register set associated with the start of the block
with the given label.
|
boolean |
mergeStarts(int label,
RegisterSpecSet specs)
Merges the given register set into the set for the block with the
given label.
|
RegisterSpecSet |
mutableCopyOfStarts(int label)
Gets a mutable copy of the register set associated with the
start of the block with the given label.
|
void |
setStarts(int label,
RegisterSpecSet specs)
Sets the register set associated with the start of the block with
the given label.
|
isImmutable, isMutable, setImmutable, throwIfImmutable, throwIfMutablepublic LocalVariableInfo(RopMethod method)
method - non-null; the method being represented by this instancepublic void setStarts(int label,
RegisterSpecSet specs)
label - >= 0; the block labelspecs - non-null; the register set to associate with the blockpublic boolean mergeStarts(int label,
RegisterSpecSet specs)
setStarts(int, com.android.dx.rop.code.RegisterSpecSet). Otherwise, this will
merge the two sets and call setStarts(int, com.android.dx.rop.code.RegisterSpecSet) on the result of the
merge.label - >= 0; the block labelspecs - non-null; the register set to merge into the start set
for the blocktrue if the merge resulted in an actual change
to the associated set (including storing one for the first time) or
false if there was no changepublic RegisterSpecSet getStarts(int label)
label - >= 0; the block labelnon-null; the associated register setpublic RegisterSpecSet getStarts(BasicBlock block)
getStarts(block.getLabel()).block - non-null; the block in questionnon-null; the associated register setpublic RegisterSpecSet mutableCopyOfStarts(int label)
RegisterSpecSet of appropriate
max size if there is not yet any set associated with the block.label - >= 0; the block labelnon-null; the associated register setpublic void addAssignment(Insn insn, RegisterSpec spec)
TypeBearer (such as a constant value).insn - non-null; the instruction in questionspec - non-null; the associated register specpublic RegisterSpec getAssignment(Insn insn)
insn - non-null; instruction in questionnull-ok; the named register being assigned, if anypublic int getAssignmentCount()
>= 0; the number of assignmentspublic void debugDump()
Copyright © 2020. All Rights Reserved.