MethodVisitor that renumbers local variables in their order of appearance. This adapter
allows one to easily add new local variables to a method. It may be used by inheriting from this
class, but the preferred way of using it is via delegation: the next visitor in the chain can
indeed add new locals when needed by calling newLocal on this adapter (this requires a
reference back to this LocalVariablesSorter).
| Modifier and Type | Field and Description |
|---|---|
| protected final int | firstLocal
The index of the first local variable, after formal parameters. |
| protected int | |
| private static final Type | OBJECT_TYPE
The type of the java.lang.Object class. |
| private Object[] | remappedLocalTypes
The local variable types after remapping. |
| private int[] | remappedVariableIndices
The mapping from old to new local variable indices. |
| Access | Constructor and Description |
|---|---|
| public | LocalVariablesSorter(final int
access flags of the adapted method. access, final String the method's descriptor (see descriptor, final MethodVisitor Type).the method visitor to which this adapter delegates calls. methodVisitor)Constructs a new |
| protected | LocalVariablesSorter(final int
the ASM API version implemented by this visitor. Must be one of the api, final int ASMx values in Opcodes.access flags of the adapted method. access, final String the method's descriptor (see descriptor, final MethodVisitor Type).the method visitor to which this adapter delegates calls. methodVisitor)Constructs a new |
| Modifier and Type | Method and Description |
|---|---|
| public int | |
| protected int | |
| private int | |
| private void | |
| protected void | setLocalType(final int
a local variable identifier, as returned by local, final Type newLocal.the type of the value being stored in the local variable. type)Notifies subclasses that a local variable has been added or remapped. |
| protected void | updateNewLocals(final Object[]
the stack map frame types corresponding to the local variables added with
newLocals)newLocal (and null for the others). The format of this array is the same as in
MethodVisitor#visitFrame, except that long and double types use two slots. The
types for the current stack map frame must be updated in place in this array.Notifies subclasses that a new stack map frame is being visited. |
| public void | visitFrame(final int
the type of this stack map frame. Must be type, final int Opcodes#F_NEW for expanded
frames, or Opcodes#F_FULL, Opcodes#F_APPEND, Opcodes#F_CHOP, Opcodes#F_SAME or Opcodes#F_APPEND, Opcodes#F_SAME1 for compressed frames.the number of local variables in the visited frame. Long and double values
count for one variable. numLocal, final Object[] the local variable types in this frame. This array must not be modified. Primitive
types are represented by local, final int Opcodes#TOP, Opcodes#INTEGER, Opcodes#FLOAT, Opcodes#LONG, Opcodes#DOUBLE, Opcodes#NULL or
Opcodes#UNINITIALIZED_THIS (long and double are represented by a single element).
Reference types are represented by String objects (representing internal names, see Type#getInternalName()), and uninitialized types by Label objects (this label designates
the NEW instruction that created this uninitialized value).the number of operand stack elements in the visited frame. Long and double
values count for one stack element. numStack, final Object[] the operand stack types in this frame. This array must not be modified. Its
content has the same format as the "local" array. stack)Overrides org. |
| public void | visitIincInsn(final int
index of the local variable to be incremented. varIndex, final int amount to increment the local variable by. increment)Overrides org. |
| public void | visitLocalVariable(final String
the name of a local variable. name, final String the type descriptor of this local variable. descriptor, final String the type signature of this local variable. May be null if the local
variable type does not use generic types. signature, final Label the first instruction corresponding to the scope of this local variable
(inclusive). start, final Label the last instruction corresponding to the scope of this local variable (exclusive). end, final int the local variable's index. index)Overrides org. |
| public AnnotationVisitor | visitLocalVariableAnnotation(final int
a reference to the annotated type. The sort of this type reference must be
typeRef, final TypePath TypeReference#LOCAL_VARIABLE or TypeReference#RESOURCE_VARIABLE. See TypeReference.the path to the annotated type argument, wildcard bound, array element type, or
static inner type within 'typeRef'. May be null if the annotation targets
'typeRef' as a whole. typePath, final Label[] the fist instructions corresponding to the continuous ranges that make the scope
of this local variable (inclusive). start, final Label[] the last instructions corresponding to the continuous ranges that make the scope of
this local variable (exclusive). This array must have the same size as the 'start' array. end, final int[] the local variable's index in each range. This array must have the same size as
the 'start' array. index, final String the class descriptor of the annotation class. descriptor, final boolean true if the annotation is visible at runtime. visible)Overrides org. |
| public void | visitMaxs(final int
maximum stack size of the method. maxStack, final int maximum number of local variables for the method. maxLocals)Overrides org. |
| public void | visitVarInsn(final int
the opcode of the local variable instruction to be visited. This opcode is either
ILOAD, LLOAD, FLOAD, DLOAD, ALOAD, ISTORE, LSTORE, FSTORE, DSTORE, ASTORE or RET. opcode, final int the operand of the instruction to be visited. This operand is the index of a
local variable. varIndex)Overrides org. |
| firstLocal | back to summary |
|---|---|
| protected final int firstLocal The index of the first local variable, after formal parameters. | |
| nextLocal | back to summary |
|---|---|
| protected int nextLocal The index of the next local variable to be created by | |
| OBJECT_TYPE | back to summary |
|---|---|
| private static final Type OBJECT_TYPE The type of the java.lang.Object class. | |
| remappedLocalTypes | back to summary |
|---|---|
| private Object[] remappedLocalTypes The local variable types after remapping. The format of this array is the same as in | |
| remappedVariableIndices | back to summary |
|---|---|
| private int[] remappedVariableIndices The mapping from old to new local variable indices. A local variable at index i of size 1 is remapped to 'mapping[2*i]', while a local variable at index i of size 2 is remapped to 'mapping[2*i+1]'. | |
| LocalVariablesSorter | back to summary |
|---|---|
| public LocalVariablesSorter(final int access, final String descriptor, final MethodVisitor methodVisitor) Constructs a new
| |
| LocalVariablesSorter | back to summary |
|---|---|
| protected LocalVariablesSorter(final int api, final int access, final String descriptor, final MethodVisitor methodVisitor) Constructs a new
| |
| newLocal | back to summary |
|---|---|
| public int newLocal(final Type type) Constructs a new local variable of the given type.
| |
| newLocalMapping | back to summary |
|---|---|
| protected int newLocalMapping(final Type type) | |
| remap | back to summary |
|---|---|
| private int remap(final int varIndex, final Type type) | |
| setFrameLocal | back to summary |
|---|---|
| private void setFrameLocal(final int local, final Object type) | |
| setLocalType | back to summary |
|---|---|
| protected void setLocalType(final int local, final Type type) Notifies subclasses that a local variable has been added or remapped. The default implementation of this method does nothing. | |
| updateNewLocals | back to summary |
|---|---|
| protected void updateNewLocals(final Object[] newLocals) Notifies subclasses that a new stack map frame is being visited. The array argument contains
the stack map frame types corresponding to the local variables added with
| |
| visitFrame | back to summary |
|---|---|
| public void visitFrame(final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) Overrides org. Doc from org. Visits the current state of the local variables and operand stack elements. This method must(*)
be called just before any instruction i that follows an unconditional branch
instruction such as GOTO or THROW, that is the target of a jump instruction, or that starts an
exception handler block. The visited types must describe the values of the local variables and
of the operand stack elements just before i is executed.
In both cases the first frame, corresponding to the method's parameters and access flags, is implicit and must not be visited. Also, it is illegal to visit two or more frames for the same code location (i.e., at least one instruction must be visited between two calls to visitFrame).
| |
| visitIincInsn | back to summary |
|---|---|
| public void visitIincInsn(final int varIndex, final int increment) Overrides org. Doc from org. Visits an IINC instruction.
| |
| visitLocalVariable | back to summary |
|---|---|
| public void visitLocalVariable(final String name, final String descriptor, final String signature, final Label start, final Label end, final int index) Overrides org. Doc from org. Visits a local variable declaration.
| |
| visitLocalVariableAnnotation | back to summary |
|---|---|
| public AnnotationVisitor visitLocalVariableAnnotation(final int typeRef, final TypePath typePath, final Label[] start, final Label[] end, final int[] index, final String descriptor, final boolean visible) Overrides org. Doc from org. Visits an annotation on a local variable type.
| |
| visitMaxs | back to summary |
|---|---|
| public void visitMaxs(final int maxStack, final int maxLocals) Overrides org. Doc from org. Visits the maximum stack size and the maximum number of local variables of the method.
| |
| visitVarInsn | back to summary |
|---|---|
| public void visitVarInsn(final int opcode, final int varIndex) Overrides org. Doc from org. Visits a local variable instruction. A local variable instruction is an instruction that loads or stores the value of a local variable.
| |