Methods Summary |
---|
public abstract void | annotate(com.android.dex.util.ExceptionWithContext ex)Annotates (adds context to) the given exception with information
about this instance.
|
public abstract com.android.dx.cf.code.LocalsArray | copy()Makes and returns a mutable copy of this instance.
|
public abstract com.android.dx.rop.type.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).
|
public abstract com.android.dx.rop.type.TypeBearer | getCategory1(int idx)Gets the type stored at the given local index, which is expected
to be an initialized category-1 value.
|
public abstract com.android.dx.rop.type.TypeBearer | getCategory2(int idx)Gets the type stored at the given local index, which is expected
to be a category-2 value.
|
public abstract int | getMaxLocals()Gets the maximum number of locals this instance can refer to.
|
public abstract com.android.dx.rop.type.TypeBearer | getOrNull(int idx)Gets the type stored at the given local index, or {@code null}
if the given local is uninitialized / invalid.
|
protected abstract OneLocalsArray | getPrimary()Gets the locals set appropriate for the current execution context.
That is, if this is a {@code OneLocalsArray} instance, then return
{@code this}, otherwise return {@code LocalsArraySet}'s
primary.
|
public abstract void | invalidate(int idx)Invalidates the local at the given index.
|
public abstract void | makeInitialized(com.android.dx.rop.type.Type type)Replaces all the occurrences of the given uninitialized type in
this array with its initialized equivalent.
|
public abstract com.android.dx.cf.code.LocalsArray | merge(com.android.dx.cf.code.LocalsArray other)Merges this instance with {@code other}. If the merged result is
the same as this instance, then this is returned (not a copy).
|
public abstract LocalsArraySet | mergeWithSubroutineCaller(com.android.dx.cf.code.LocalsArray other, int predLabel)Merges this instance with a {@code LocalsSet} from a subroutine
caller. To be used when merging in the first block of a subroutine.
|
public abstract void | set(int idx, com.android.dx.rop.type.TypeBearer type)Sets the type stored at the given local index. If the given type
is category-2, then (a) the index must be at least two less than
{@link #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.
|
public abstract void | set(com.android.dx.rop.code.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). This is identical to calling
{@code set(spec.getReg(), spec)}.
|