|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.android.dx.util.MutabilityControl
com.android.dx.cf.code.LocalsArray
com.android.dx.cf.code.OneLocalsArray
public class OneLocalsArray
Representation of an array of local variables, with Java semantics.
Note: For the most part, the documentation for this class
ignores the distinction between Type and TypeBearer.
| Constructor Summary | |
|---|---|
OneLocalsArray(int maxLocals)
Constructs an instance. |
|
| Method Summary | |
|---|---|
void |
annotate(com.android.dex.util.ExceptionWithContext ex)
Annotates (adds context to) the given exception with information about this instance. |
OneLocalsArray |
copy()
Makes and returns a mutable copy of this instance. |
TypeBearer |
get(int idx)
Gets the type stored at the given local index, only succeeding if the given local contains a valid type (though it is allowed to be an uninitialized instance). |
TypeBearer |
getCategory1(int idx)
Gets the type stored at the given local index, which is expected to be an initialized category-1 value. |
TypeBearer |
getCategory2(int idx)
Gets the type stored at the given local index, which is expected to be a category-2 value. |
int |
getMaxLocals()
Gets the maximum number of locals this instance can refer to. |
TypeBearer |
getOrNull(int idx)
Gets the type stored at the given local index, or null
if the given local is uninitialized / invalid. |
protected OneLocalsArray |
getPrimary()
Gets the locals set appropriate for the current execution context. |
void |
invalidate(int idx)
Invalidates the local at the given index. |
void |
makeInitialized(Type type)
Replaces all the occurrences of the given uninitialized type in this array with its initialized equivalent. |
LocalsArray |
merge(LocalsArray other)
Merges this instance with other. |
OneLocalsArray |
merge(OneLocalsArray other)
Merges this OneLocalsArray instance with another OneLocalsArray instance. |
LocalsArraySet |
mergeWithSubroutineCaller(LocalsArray other,
int predLabel)
Merges this instance with a LocalsSet from a subroutine
caller. |
void |
set(int idx,
TypeBearer type)
Sets the type stored at the given local index. |
void |
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). |
String |
toHuman()
{@inheritDoc |
| Methods inherited from class com.android.dx.util.MutabilityControl |
|---|
isImmutable, isMutable, setImmutable, throwIfImmutable, throwIfMutable |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public OneLocalsArray(int maxLocals)
nulls).
maxLocals - >= 0; the maximum number of locals this instance
can refer to| Method Detail |
|---|
public OneLocalsArray copy()
LocalsArray
copy in class LocalsArraynon-null; the copypublic void annotate(com.android.dex.util.ExceptionWithContext ex)
LocalsArray
annotate in class LocalsArrayex - non-null; the exception to annotatepublic String toHuman()
non-null; the human string formpublic void makeInitialized(Type type)
LocalsArray
makeInitialized in class LocalsArraytype - non-null; type to replacepublic int getMaxLocals()
LocalsArray
getMaxLocals in class LocalsArray
public void set(int idx,
TypeBearer type)
LocalsArrayLocalsArray.getMaxLocals() and (b) the next index gets invalidated
by the operation. In case of either category, if the previous
local contains a category-2 value, then it too is invalidated by
this operation.
set in class LocalsArrayidx - >= 0, < getMaxLocals(); which localtype - non-null; new type for the local at idxpublic void set(RegisterSpec spec)
LocalsArrayset(spec.getReg(), spec).
set in class LocalsArrayspec - non-null; register spec to use as the basis for the updatepublic void invalidate(int idx)
LocalsArray
invalidate in class LocalsArrayidx - >= 0, < getMaxLocals(); which localpublic TypeBearer getOrNull(int idx)
LocalsArraynull
if the given local is uninitialized / invalid.
getOrNull in class LocalsArrayidx - >= 0, < getMaxLocals(); which local
null-ok; the type of value stored in that localpublic TypeBearer get(int idx)
LocalsArray
get in class LocalsArrayidx - >= 0, < getMaxLocals(); which local
non-null; the type of value stored in that localpublic TypeBearer getCategory1(int idx)
LocalsArray
getCategory1 in class LocalsArrayidx - >= 0, < getMaxLocals(); which local
non-null; the type of value stored in that localpublic TypeBearer getCategory2(int idx)
LocalsArray
getCategory2 in class LocalsArrayidx - >= 0, < getMaxLocals(); which local
non-null; the type of value stored in that localpublic LocalsArray merge(LocalsArray other)
LocalsArrayother. If the merged result is
the same as this instance, then this is returned (not a copy).
merge in class LocalsArrayother - non-null; another LocalsArray
non-null; the merge result, a new instance or thispublic OneLocalsArray merge(OneLocalsArray other)
merge
which is called by that method when appropriate.
other - locals array with which to merge
public LocalsArraySet mergeWithSubroutineCaller(LocalsArray other,
int predLabel)
LocalsArrayLocalsSet from a subroutine
caller. To be used when merging in the first block of a subroutine.
mergeWithSubroutineCaller in class LocalsArrayother - other non-null; another LocalsArray. The final locals
state of a subroutine caller.predLabel - the label of the subroutine caller block.
non-null; the merge result, a new instance or thisprotected OneLocalsArray getPrimary()
OneLocalsArray instance, then return
this, otherwise return LocalsArraySet's
primary.
getPrimary in class LocalsArray
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||