Class MethodVisitor
java.lang.Object
mockit.asm.BaseWriter
mockit.asm.methods.MethodVisitor
- Direct Known Subclasses:
MethodWriter, WrappingMethodVisitor
A visitor to visit a Java method, in the following order:
(
(
BaseWriter.visitAnnotation(String))* (visitParameterAnnotation(int, String))* [(visitXInsn |
visitLabel(Label) | visitTryCatchBlock(Label, Label, Label, String) | visitLocalVariable(String, String, String, Label, Label, int) | visitLineNumber(int, Label))*
visitMaxStack(int)] BaseWriter.visitEnd().
In addition, the visitXInsn and visitLabel methods are called in the sequential
order of the bytecode instructions of the visited code, visitTryCatchBlock is called before the
labels passed as arguments have been visited, and the visitLocalVariable and
visitLineNumber methods are called after the labels passed as arguments have been visited.
-
Field Summary
Fields inherited from class BaseWriter
annotations, classOrMemberAccess, cp -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedprotectedMethodVisitor(ConstantPoolGeneration cp, int methodAccess) -
Method Summary
Modifier and TypeMethodDescriptionvoidvisitFieldInsn(int opcode, String owner, String name, String desc) Visits a field access instruction, which loads or stores the value of a field of an object or a class.voidvisitIincInsn(@NonNegative int varIndex, int increment) Visits anIINCinstruction.voidvisitInsn(int opcode) Visits a zero operand instruction.voidvisitIntInsn(int opcode, int operand) Visits an instruction with a singleintoperand.voidvisitInvokeDynamicInsn(String name, String desc, MethodHandle bsm, Object... bsmArgs) Visits anINVOKEDYNAMICinstruction.voidvisitJumpInsn(int opcode, Label label) Visits a jump instruction.voidvisitLabel(Label label) Visits a label, which designates the instruction that will be visited just after it.voidvisitLdcInsn(Object cst) Visits aLDCinstruction.voidvisitLineNumber(@NonNegative int line, Label start) Visits a line number within the body of the method.voidvisitLocalVariable(String name, String desc, String signature, Label start, Label end, @NonNegative int index) Visits a local variable declaration.voidvisitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels) Visits aLOOKUPSWITCHinstruction.voidvisitMaxStack(@NonNegative int maxStack) Visits the maximum stack size of the method.voidvisitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) Visits a method invocation instruction, which invokes a method or constructor.voidvisitMultiANewArrayInsn(String desc, @NonNegative int dims) Visits aMULTIANEWARRAYinstruction.visitParameterAnnotation(@NonNegative int parameter, String desc) Visits an annotation on a parameter of the method being visited.voidvisitTableSwitchInsn(int min, int max, Label dflt, Label... labels) Visits aTABLESWITCHinstruction.voidvisitTryCatchBlock(Label start, Label end, Label handler, String type) Visits atry..catchblock.voidvisitTypeInsn(int opcode, String typeDesc) Visits a type instruction, which takes the internal name of a class as parameter.voidvisitVarInsn(int opcode, @NonNegative int varIndex) Visits a local variable instruction, which loads or stores the value of a local variable.Methods inherited from class BaseWriter
createMarkerAttributes, getAnnotationsSize, getConstantPoolGeneration, getMarkerAttributeCount, getMarkerAttributesSize, put, put, putAccess, putAnnotations, putMarkerAttributes, visitAnnotation, visitEnd
-
Constructor Details
-
MethodVisitor
protected MethodVisitor() -
MethodVisitor
-
-
Method Details
-
visitParameterAnnotation
@Nullable public AnnotationVisitor visitParameterAnnotation(@NonNegative int parameter, @NonNull String desc) Visits an annotation on a parameter of the method being visited.- Parameters:
parameter- the parameter indexdesc- the descriptor of the annotation type- Returns:
- a visitor to visit the annotation values, or
nullif this visitor is not interested in visiting this annotation
-
visitInsn
public void visitInsn(int opcode) Visits a zero operand instruction.- Parameters:
opcode- the opcode of the instruction to be visited: NOP, ACONST_NULL, ICONST_M1, ICONST_0 ICONST_0 to ICONST_5, LCONST_0, LCONST_1, FCONST_0 to FCONST_2, DCONST_0, DCONST_1, IALOAD, LALOAD, FALOAD, DALOAD, AALOAD, BALOAD, CALOAD, SALOAD, IASTORE, LASTORE, FASTORE, DASTORE, AASTORE, BASTORE, CASTORE, SASTORE, POP, POP2, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, SWAP, IADD, LADD, FADD, DADD, ISUB, LSUB, FSUB, DSUB, IMUL, LMUL, FMUL, DMUL, IDIV, LDIV, FDIV, DDIV, IREM, LREM, FREM, DREM, INEG, LNEG, FNEG, DNEG, ISHL, LSHL, ISHR, LSHR, IUSHR, LUSHR, IAND, LAND, IOR, LOR, IXOR, LXOR, I2L, I2F, I2D, L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B, I2C, I2S, LCMP, FCMPL, FCMPG, DCMPL, DCMPG, IRETURN, LRETURN, FRETURN, DRETURN, ARETURN, RETURN, ARRAYLENGTH, ATHROW, MONITORENTER, or MONITOREXIT
-
visitIntInsn
public void visitIntInsn(int opcode, int operand) Visits an instruction with a singleintoperand.- Parameters:
opcode- the opcode of the instruction to be visited: BIPUSH, SIPUSH, or NEWARRAYoperand- the operand of the instruction to be visited: when opcode is BIPUSH, it's betweenByte.MIN_VALUEandByte.MAX_VALUE; when opcode is SIPUSH, it's betweenShort.MIN_VALUEandShort.MAX_VALUE; when opcode is NEWARRAY, the operand value is one of theArrayElementTypevalues
-
visitVarInsn
public void visitVarInsn(int opcode, @NonNegative int varIndex) Visits a local variable instruction, which loads or stores the value of a local variable.- Parameters:
opcode- the opcode of the local variable instruction to be visited: ILOAD, LLOAD, FLOAD, DLOAD, ALOAD, ISTORE, LSTORE, FSTORE, DSTORE, ASTORE or RETvarIndex- the operand of the instruction to be visited, which is the index of a local variable
-
visitTypeInsn
Visits a type instruction, which takes the internal name of a class as parameter.- Parameters:
opcode- the opcode of the instruction to be visited: NEW, ANEWARRAY, CHECKCAST, or INSTANCEOFtypeDesc- the operand of the instruction, which is the internal name of an object or array class
-
visitFieldInsn
-
visitMethodInsn
public void visitMethodInsn(int opcode, @NonNull String owner, @NonNull String name, @NonNull String desc, boolean itf) Visits a method invocation instruction, which invokes a method or constructor.- Parameters:
opcode- the opcode of the instruction: INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC, or INVOKEINTERFACEowner- the internal name of the method's owner classname- the method's namedesc- the method's descriptor (seeJavaType)itf- whether the method's owner class is an interface or not
-
visitInvokeDynamicInsn
public void visitInvokeDynamicInsn(@NonNull String name, @NonNull String desc, @NonNull MethodHandle bsm, @NonNull Object... bsmArgs) Visits anINVOKEDYNAMICinstruction. -
visitJumpInsn
Visits a jump instruction.- Parameters:
opcode- the opcode of the jump instruction to be visited: IFEQ, IFNE, IFLT, IFGE, IFGT, IFLE, IF_ICMPEQ, IF_ICMPNE, IF_ICMPLT, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ACMPEQ, IF_ACMPNE, GOTO, JSR, IFNULL, or IFNONNULLlabel- the operand of the instruction to be visited, which is a label that designates the instruction to which the jump instruction may jump
-
visitLabel
Visits a label, which designates the instruction that will be visited just after it. -
visitLdcInsn
Visits aLDCinstruction.- Parameters:
cst- the constant to be loaded on the stack, which must be a non nullInteger/Float/Long/Double/String, anObjectTypeorArrayTypefor.classconstants, aMethodType, or aMethodHandle
-
visitIincInsn
public void visitIincInsn(@NonNegative int varIndex, int increment) Visits anIINCinstruction.- Parameters:
varIndex- index of the local variable to be incrementedincrement- amount to increment the local variable by
-
visitTableSwitchInsn
Visits aTABLESWITCHinstruction.- Parameters:
min- the minimum key valuemax- the maximum key valuedflt- beginning of the default handler blocklabels- beginnings of the handler blocks;labels[i]is the beginning of the handler block for themin + ikey
-
visitLookupSwitchInsn
public void visitLookupSwitchInsn(@NonNull Label dflt, @NonNull int[] keys, @NonNull Label[] labels) Visits aLOOKUPSWITCHinstruction.- Parameters:
dflt- beginning of the default handler blockkeys- the values of the keyslabels- beginnings of the handler blocks;labels[i]is the beginning of the handler block for thekeys[i]
-
visitMultiANewArrayInsn
Visits aMULTIANEWARRAYinstruction.- Parameters:
desc- an array type descriptor (seeArrayType)dims- number of dimensions of the array to allocate
-
visitTryCatchBlock
public void visitTryCatchBlock(@NonNull Label start, @NonNull Label end, @NonNull Label handler, @Nullable String type) Visits atry..catchblock.- Parameters:
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 codetype- internal name of the type of exceptions handled by the handler, ornullto catch any exceptions (for "finally" blocks)
-
visitLocalVariable
public void visitLocalVariable(@NonNull String name, @NonNull String desc, @Nullable String signature, @NonNull Label start, @NonNull Label end, @NonNegative int index) Visits a local variable declaration.- Parameters:
name- the name of the local variabledesc- the type descriptor of the local variablesignature- the type signature of the local variable;nullwhen the local variable type does not use generic typesstart- 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)index- the local variable's index
-
visitLineNumber
Visits a line number within the body of the method.- Parameters:
line- a line number, which refers to the source file from which the class was compiledstart- the first instruction corresponding to this line number
-
visitMaxStack
public void visitMaxStack(@NonNegative int maxStack) Visits the maximum stack size of the method.
-