|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.ow2.asmdex.MethodVisitor
public abstract class MethodVisitor
A visitor to visit a Java method. The methods of this interface must be
called in the following order: [ visitAnnotationDefault ] [ visitParameters ] (
visitAnnotation | visitParameterAnnotation |
visitAttribute )* [ visitCode visitMaxs ( visitFrame |
visitXInsn | visitLabel | visitTryCatchBlock |
visitLocalVariable | visitLineNumber)* ]
visitEnd. In addition, the visitXInsn
and visitLabel methods must be called in the sequential order of
the bytecode instructions of the visited code, visitTryCatchBlock
must be called before the labels passed as arguments have been
visited, and the visitLocalVariable and visitLineNumber
methods must be called after the labels passed as arguments have been
visited.
Changes from ASM :
| Field Summary | |
|---|---|
protected int |
api
The ASM API version implemented by this visitor. |
protected MethodVisitor |
mv
The method visitor to which this visitor must delegate method calls. |
| Constructor Summary | |
|---|---|
MethodVisitor(int api)
Constructs a new MethodVisitor. |
|
MethodVisitor(int api,
MethodVisitor mv)
Constructs a new MethodVisitor. |
|
| Method Summary | |
|---|---|
AnnotationVisitor |
visitAnnotation(java.lang.String desc,
boolean visible)
Visits an annotation of this method. |
AnnotationVisitor |
visitAnnotationDefault()
Visits the default value of this annotation interface method. |
void |
visitArrayLengthInsn(int destinationRegister,
int arrayReferenceBearing)
Visits an ARRAY-LENGTH instruction. |
void |
visitArrayOperationInsn(int opcode,
int valueRegister,
int arrayRegister,
int indexRegister)
Visits an instruction that performs an operation on an array. |
void |
visitAttribute(java.lang.Object attr)
Visits a non standard attribute of this method. |
void |
visitCode()
Starts the visit of the method's code, if any (i.e. |
void |
visitEnd()
Visits the end of the method. |
void |
visitFieldInsn(int opcode,
java.lang.String owner,
java.lang.String name,
java.lang.String desc,
int valueRegister,
int objectRegister)
Visits a field instruction. |
void |
visitFillArrayDataInsn(int arrayReference,
java.lang.Object[] arrayData)
Visits a Fill Array Data instruction. |
void |
visitFrame(int type,
int nLocal,
java.lang.Object[] local,
int nStack,
java.lang.Object[] stack)
Visits the current state of the local variables and operand stack elements. |
void |
visitInsn(int opcode)
Visits a zero operand instruction. |
void |
visitIntInsn(int opcode,
int register)
Visits an instruction with a single register. |
void |
visitJumpInsn(int opcode,
Label label,
int registerA,
int registerB)
Visits a jump operation, conditional or not. |
void |
visitLabel(Label label)
Visits a label. |
void |
visitLineNumber(int line,
Label start)
Visits a line number declaration. |
void |
visitLocalVariable(java.lang.String name,
java.lang.String desc,
java.lang.String signature,
Label start,
Label end,
int index)
Visits a local variable declaration. |
void |
visitLocalVariable(java.lang.String name,
java.lang.String desc,
java.lang.String signature,
Label start,
java.util.List<Label> ends,
java.util.List<Label> restarts,
int index)
Visits a local variable declaration. |
void |
visitLookupSwitchInsn(int register,
Label dflt,
int[] keys,
Label[] labels)
Visits a LOOKUPSWITCH instruction. |
void |
visitMaxs(int maxStack,
int maxLocals)
Visits the maximum stack size and the maximum number of local variables of the method. |
void |
visitMethodInsn(int opcode,
java.lang.String owner,
java.lang.String name,
java.lang.String desc,
int[] arguments)
Visits a method instruction. |
void |
visitMultiANewArrayInsn(java.lang.String desc,
int[] registers)
Visits a MULTIANEWARRAY instruction. |
void |
visitOperationInsn(int opcode,
int destinationRegister,
int firstSourceRegister,
int secondSourceRegister,
int value)
Visits an instruction that performs an unary or binary operation on one or two sources or one array, possibly a literal value, to a destination register. |
AnnotationVisitor |
visitParameterAnnotation(int parameter,
java.lang.String desc,
boolean visible)
Visits an annotation of a parameter this method. |
void |
visitParameters(java.lang.String[] parameters)
Visits the parameters of the method, if any. |
void |
visitStringInsn(int opcode,
int destinationRegister,
java.lang.String string)
Visits a string instruction. |
void |
visitTableSwitchInsn(int register,
int min,
int max,
Label dflt,
Label[] labels)
Visits a TABLESWITCH instruction. |
void |
visitTryCatchBlock(Label start,
Label end,
Label handler,
java.lang.String type)
Visits a try catch block. |
void |
visitTypeInsn(int opcode,
int destinationRegister,
int referenceBearingRegister,
int sizeRegister,
java.lang.String type)
Visits a type instruction. |
void |
visitVarInsn(int opcode,
int destinationRegister,
int var)
Visits a local variable instruction. |
void |
visitVarInsn(int opcode,
int destinationRegister,
long var)
Visits a local variable instruction, using a Long. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected MethodVisitor mv
protected final int api
| Constructor Detail |
|---|
public MethodVisitor(int api)
MethodVisitor.
public MethodVisitor(int api,
MethodVisitor mv)
MethodVisitor.
mv - the method visitor to which this visitor must delegate method
calls. May be null.| Method Detail |
|---|
public AnnotationVisitor visitAnnotationDefault()
public AnnotationVisitor visitAnnotation(java.lang.String desc,
boolean visible)
desc - the class descriptor of the annotation class.visible - true if the annotation is visible at runtime.
public AnnotationVisitor visitParameterAnnotation(int parameter,
java.lang.String desc,
boolean visible)
parameter - the parameter index.desc - the class descriptor of the annotation class.visible - true if the annotation is visible at runtime.
public void visitAttribute(java.lang.Object attr)
attr - an attribute.public void visitCode()
public void visitParameters(java.lang.String[] parameters)
parameters - a list of parameters.
public void visitFrame(int type,
int nLocal,
java.lang.Object[] local,
int nStack,
java.lang.Object[] stack)
type - the type of this stack map frame. Ignored by AsmDex.nLocal - the number of local variables in the visited frame. Ignored by AsmDex.local - the local variable types in this frame. Ignored by AsmDex.nStack - the number of operand stack elements in the visited frame. Ignored by AsmDex.stack - the operand stack types in this frame. Ignored by AsmDex.public void visitInsn(int opcode)
opcode - the opcode of the instruction to be visited. This opcode is
either NOP, RETURN-VOID, or unused.
public void visitIntInsn(int opcode,
int register)
opcode - the opcode of the instruction to be visited.
This opcode is either RETURN, RETURN-WIDE, RETURN-OBJECT,
MOVE-RESULT, MOVE-RESULT-WIDE, MOVE-RESULT-OBJECT, MOVE-EXCEPTION,
THROW vAA.register - the operand of the instruction to be visited.
public void visitVarInsn(int opcode,
int destinationRegister,
int var)
opcode - the opcode of the local variable instruction to be visited.
This opcode is either MOVE, MOVE/FROM16, MOVE/16, MOVE-WIDE,
MOVE-WIDE/FROM16, MOVE-WIDE/16, MOVE-OBJECT, MOVE-OBJECT/FROM16,
MOVE-OBJECT/16,
CONST/4, CONST/16, CONST, CONST/HIGH16, CONST-WIDE/16, CONST-WIDE/32.destinationRegister - the destination register.var - the operand of the instruction to be visited. This operand is
either a value or a source Register.
public void visitVarInsn(int opcode,
int destinationRegister,
long var)
opcode - the opcode of the local variable instruction to be visited.
This opcode is either CONST-WIDE, CONST-WIDE/HIGH16.destinationRegister - the destination register.var - the operand of the instruction to be visited. This operand is
either a value or a source Register.
public void visitTypeInsn(int opcode,
int destinationRegister,
int referenceBearingRegister,
int sizeRegister,
java.lang.String type)
opcode - the opcode of the type instruction to be visited. This
opcode is either CONST-CLASS, NEW-ARRAY, NEW-INSTANCE, CHECK-CAST
or INSTANCE-OF.destinationRegister - the destination register. Used only by CONST-CLASS,
INSTANCE-OF, NEW-INSTANCE, NEW-ARRAY.referenceBearingRegister - reference bearing register. Only used for
CHECK-CAST, INSTANCE-OF instructions.sizeRegister - size register. Used only for NEW-ARRAY.type - the operand of the instruction to be visited. This operand
must be the internal name of an object or array class.
public void visitFieldInsn(int opcode,
java.lang.String owner,
java.lang.String name,
java.lang.String desc,
int valueRegister,
int objectRegister)
opcode - the opcode of the type instruction to be visited. This
opcode is either IinstanceOP (IGETxx/IPUTxx) and SstaticOP (SGETXX/IPUTxx).owner - the internal name of the field's owner class.name - the field's name.desc - the field's descriptor.valueRegister - the value register.objectRegister - the objectRegister. Ignored for static operations.
public void visitMethodInsn(int opcode,
java.lang.String owner,
java.lang.String name,
java.lang.String desc,
int[] arguments)
opcode - the opcode of the type instruction to be visited. This
opcode is either INVOKE-VIRTUAL, INVOKE-SUPER, INVOKE-DIRECT,
INVOKE-STATIC or INVOKE-INTERFACE.owner - the internal name of the method's owner class.name - the method's name.desc - the method's descriptor.arguments - the arguments to give to the method.
public void visitStringInsn(int opcode,
int destinationRegister,
java.lang.String string)
opcode - the opcode of the type instruction to be visited. This
opcode is either CONST-STRING or CONST-STRING/JUMBO.destinationRegister - the destination register.string - the string of the instruction to be visited.
public void visitOperationInsn(int opcode,
int destinationRegister,
int firstSourceRegister,
int secondSourceRegister,
int value)
opcode - the opcode of the type instruction to be visited. This
opcode is in either of these categories : UNOP, BINOP, BINOP/2ADDR,
BINOP/LIT16, BINOP/LIT8.destinationRegister - the destination register or pair. For BINOP/2ADDR,
it should be the same as firstSourceRegister.firstSourceRegister - the first source register or pair. For BINOP/2ADDR,
it should be the same as destinationRegister.secondSourceRegister - the second source register or pair. Ignored for
UNOP, BINOP/LIT16, BINOP/LIT8.value - literal value. Only useful for BINOP/LIT16, BINOP/LIT8.
public void visitArrayOperationInsn(int opcode,
int valueRegister,
int arrayRegister,
int indexRegister)
opcode - the opcode of the type instruction to be visited. This
opcode is either AGET(-xxx) or APUT(-xxx).valueRegister - the value register. May be source or destination register/pair.arrayRegister - the array register.indexRegister - the index register.
public void visitFillArrayDataInsn(int arrayReference,
java.lang.Object[] arrayData)
arrayReference - array reference.arrayData - array of the primitives to encode.
public void visitJumpInsn(int opcode,
Label label,
int registerA,
int registerB)
opcode - the opcode of the type instruction to be visited. This
opcode is either GOTO, IF-EQ, IF-NE, IF-LT, IF-GE, IF-GT, IF-LE,
or IF-EQZ, IF-NEZ, IF-LTZ, IF-GEZ, IF-GTZ, IF-LEZ.label - the operand of the instruction to be visited. This operand
is a label that designates the instruction to which the jump
instruction may jump.registerA - (4 bits). Ignored for unconditional jump.registerB - (4 bits). Ignored for unconditional jump or zero tests (IF-EQZ,
IF-NEZ...)public void visitLabel(Label label)
label - a Label object.
public void visitTableSwitchInsn(int register,
int min,
int max,
Label dflt,
Label[] labels)
register - the register to test.min - the minimum key value.max - the maximum key value (ignored by the Writer).dflt - beginning of the default handler block (ignored by the Writer).labels - beginnings of the handler blocks. labels[i] is
the beginning of the handler block for the min + i key.
public void visitLookupSwitchInsn(int register,
Label dflt,
int[] keys,
Label[] labels)
register - the register to test.dflt - beginning of the default handler block (ignored by the Writer).keys - the values of the keys.labels - beginnings of the handler blocks. labels[i] is
the beginning of the handler block for the keys[i] key.
public void visitMultiANewArrayInsn(java.lang.String desc,
int[] registers)
desc - an array type descriptor.registers - array of registers containing the values of the array.
public void visitArrayLengthInsn(int destinationRegister,
int arrayReferenceBearing)
destinationRegister - the destination register.arrayReferenceBearing - register referencing the array.
public void visitTryCatchBlock(Label start,
Label end,
Label handler,
java.lang.String type)
start - beginning of the exception handler's scope (inclusive).end - end of the exception handler's scope (exclusive).handler - beginning of the exception handler's code.type - internal name of the type of exceptions handled by the
handler, or null to catch any exceptions (for "finally"
blocks).
java.lang.IllegalArgumentException - if one of the labels has already been
visited by this visitor (by the visitLabel
method).
public void visitLocalVariable(java.lang.String name,
java.lang.String desc,
java.lang.String signature,
Label start,
Label end,
int index)
name - the name of a local variable.desc - the type descriptor of this local variable.signature - the type signature of this local variable. May be
null if the local variable type does not use generic
types.start - the first instruction corresponding to the scope of this
local variable (inclusive).end - the last instruction corresponding to the scope of this local
variable (exclusive). May be null if we don't know it.index - the local variable's index.
java.lang.IllegalArgumentException - if one of the labels has not already
been visited by this visitor (by the
visitLabel method).
public void visitLocalVariable(java.lang.String name,
java.lang.String desc,
java.lang.String signature,
Label start,
java.util.List<Label> ends,
java.util.List<Label> restarts,
int index)
name - the name of a local variable.desc - the type descriptor of this local variable.signature - the type signature of this local variable. May be
null if the local variable type does not use generic
types.start - the first instruction corresponding to the scope of this
local variable (inclusive).ends - the last instruction corresponding to the scope of this local
variable (exclusive). May be null if we don't know it. As Variables can be
restarted, we may have several ends.restarts - the instruction where the local variable is restarted. May be
null if it never happens. Variables can be restarted as many times as
needed, hence the array.index - the local variable's index.
java.lang.IllegalArgumentException - if one of the labels has not already
been visited by this visitor (by the
visitLabel method).
public void visitLineNumber(int line,
Label start)
line - a line number. This number refers to the source file from
which the class was compiled.start - the first instruction corresponding to this line number.
java.lang.IllegalArgumentException - if start has not already been
visited by this visitor (by the visitLabel
method).
public void visitMaxs(int maxStack,
int maxLocals)
maxStack - maximum stack size of the method.maxLocals - ignored in AsmDex. Maximum number of local variables
for the method.public void visitEnd()
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||