Package mockit.asm.methods
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(java.lang.String)
)* (visitParameterAnnotation(int, java.lang.String)
)* [(visitXInsn
|
visitLabel(mockit.asm.controlFlow.Label)
| visitTryCatchBlock(mockit.asm.controlFlow.Label, mockit.asm.controlFlow.Label, mockit.asm.controlFlow.Label, java.lang.String)
| visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, mockit.asm.controlFlow.Label, mockit.asm.controlFlow.Label, int)
| visitLineNumber(int, mockit.asm.controlFlow.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 mockit.asm.BaseWriter
annotations, classOrMemberAccess, cp
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
protected
MethodVisitor
(ConstantPoolGeneration cp, int methodAccess) -
Method Summary
Modifier and TypeMethodDescriptionvoid
visitFieldInsn
(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.void
visitIincInsn
(@org.checkerframework.checker.index.qual.NonNegative int varIndex, int increment) Visits anIINC
instruction.void
visitInsn
(int opcode) Visits a zero operand instruction.void
visitIntInsn
(int opcode, int operand) Visits an instruction with a singleint
operand.void
visitInvokeDynamicInsn
(String name, String desc, MethodHandle bsm, Object... bsmArgs) Visits anINVOKEDYNAMIC
instruction.void
visitJumpInsn
(int opcode, Label label) Visits a jump instruction.void
visitLabel
(Label label) Visits a label, which designates the instruction that will be visited just after it.void
visitLdcInsn
(Object cst) Visits aLDC
instruction.void
visitLineNumber
(@org.checkerframework.checker.index.qual.NonNegative int line, Label start) Visits a line number within the body of the method.void
visitLocalVariable
(String name, String desc, String signature, Label start, Label end, @org.checkerframework.checker.index.qual.NonNegative int index) Visits a local variable declaration.void
visitLookupSwitchInsn
(Label dflt, int[] keys, Label[] labels) Visits aLOOKUPSWITCH
instruction.void
visitMaxStack
(@org.checkerframework.checker.index.qual.NonNegative int maxStack) Visits the maximum stack size of the method.void
visitMethodInsn
(int opcode, String owner, String name, String desc, boolean itf) Visits a method invocation instruction, which invokes a method or constructor.void
visitMultiANewArrayInsn
(String desc, @org.checkerframework.checker.index.qual.NonNegative int dims) Visits aMULTIANEWARRAY
instruction.visitParameterAnnotation
(@org.checkerframework.checker.index.qual.NonNegative int parameter, String desc) Visits an annotation on a parameter of the method being visited.void
visitTableSwitchInsn
(int min, int max, Label dflt, Label... labels) Visits aTABLESWITCH
instruction.void
visitTryCatchBlock
(Label start, Label end, Label handler, String type) Visits atry..catch
block.void
visitTypeInsn
(int opcode, String typeDesc) Visits a type instruction, which takes the internal name of a class as parameter.void
visitVarInsn
(int opcode, @org.checkerframework.checker.index.qual.NonNegative int varIndex) Visits a local variable instruction, which loads or stores the value of a local variable.Methods inherited from class mockit.asm.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(@org.checkerframework.checker.index.qual.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
null
if 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 singleint
operand.- 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_VALUE
andByte.MAX_VALUE
; when opcode is SIPUSH, it's betweenShort.MIN_VALUE
andShort.MAX_VALUE
; when opcode is NEWARRAY, the operand value is one of theArrayElementType
values
-
visitVarInsn
public void visitVarInsn(int opcode, @org.checkerframework.checker.index.qual.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
public void visitFieldInsn(int opcode, @NonNull String owner, @NonNull String name, @NonNull String desc) Visits a field access instruction, which loads or stores the value of a field of an object or a class. -
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 anINVOKEDYNAMIC
instruction. -
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 aLDC
instruction.- Parameters:
cst
- the constant to be loaded on the stack, which must be a non nullInteger
/Float
/Long
/Double
/String
, anObjectType
orArrayType
for.class
constants, aMethodType
, or aMethodHandle
-
visitIincInsn
public void visitIincInsn(@org.checkerframework.checker.index.qual.NonNegative int varIndex, int increment) Visits anIINC
instruction.- Parameters:
varIndex
- index of the local variable to be incrementedincrement
- amount to increment the local variable by
-
visitTableSwitchInsn
Visits aTABLESWITCH
instruction.- 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 + i
key
-
visitLookupSwitchInsn
public void visitLookupSwitchInsn(@NonNull Label dflt, @NonNull int[] keys, @NonNull Label[] labels) Visits aLOOKUPSWITCH
instruction.- 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
public void visitMultiANewArrayInsn(@NonNull String desc, @org.checkerframework.checker.index.qual.NonNegative int dims) Visits aMULTIANEWARRAY
instruction.- 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..catch
block.- 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, ornull
to 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, @org.checkerframework.checker.index.qual.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;null
when 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
public void visitLineNumber(@org.checkerframework.checker.index.qual.NonNegative int line, @NonNull Label start) 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(@org.checkerframework.checker.index.qual.NonNegative int maxStack) Visits the maximum stack size of the method.
-