MethodVisitor
that prints the methods it visits with a Printer
.
Modifier and Type | Field and Description |
---|---|
public final Printer | p
The printer to convert the visited method into text. |
Access | Constructor and Description |
---|---|
public | TraceMethodVisitor(final Printer
the printer to convert the visited method into text. printer)Constructs a new |
public | TraceMethodVisitor(final MethodVisitor
the method visitor to which to delegate calls. May be null. methodVisitor, final Printer the printer to convert the visited method into text. printer)Constructs a new |
Modifier and Type | Method and Description |
---|---|
public void | visitAnnotableParameterCount(final int
the number of method parameters than can have annotations. This number
must be less or equal than the number of parameter types in the method descriptor. It can
be strictly less when a method has synthetic parameters and when these parameters are
ignored when computing parameter indices for the purpose of parameter annotations (see
https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.18). parameterCount, final boolean true to define the number of method parameters that can have
annotations visible at runtime, false to define the number of method parameters
that can have annotations invisible at runtime. visible)Overrides jdk. Visits the number of method parameters that can have annotations. |
public AnnotationVisitor | visitAnnotation(final String
the class descriptor of the annotation class. descriptor, final boolean true if the annotation is visible at runtime. visible)Overrides jdk. Visits an annotation of this method. |
public AnnotationVisitor | visitAnnotationDefault()
Overrides jdk. Visits the default value of this annotation interface method. |
public void | visitAttribute(final Attribute
an attribute. attribute)Overrides jdk. Visits a non standard attribute of this method. |
public void | visitCode()
Overrides jdk. Starts the visit of the method's code, if any (i.e. non abstract method). |
public void | visitEnd()
Overrides jdk. Visits the end of the method. |
public void | visitFieldInsn(final int
the opcode of the type instruction to be visited. This opcode is either
GETSTATIC, PUTSTATIC, GETFIELD or PUTFIELD. opcode, final String the internal name of the field's owner class (see owner, final String Type#getInternalName() ).the field's name. name, final String the field's descriptor (see descriptor)Type ).Overrides jdk. Visits a field instruction. |
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 jdk. Visits the current state of the local variables and operand stack elements. |
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 jdk. Visits an IINC instruction. |
public void | visitInsn(final int
the opcode of the instruction to be visited. This opcode is either NOP,
ACONST_NULL, ICONST_M1, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5,
LCONST_0, LCONST_1, FCONST_0, FCONST_1, 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. opcode)Overrides jdk. Visits a zero operand instruction. |
public AnnotationVisitor | visitInsnAnnotation(final int
a reference to the annotated type. The sort of this type reference must be
typeRef, final TypePath TypeReference#INSTANCEOF , TypeReference#NEW , TypeReference#CONSTRUCTOR_REFERENCE , TypeReference#METHOD_REFERENCE , TypeReference#CAST , TypeReference#CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT , TypeReference#METHOD_INVOCATION_TYPE_ARGUMENT , TypeReference#CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT , or TypeReference#METHOD_REFERENCE_TYPE_ARGUMENT . 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 String the class descriptor of the annotation class. descriptor, final boolean true if the annotation is visible at runtime. visible)Overrides jdk. Visits an annotation on an instruction. |
public void | visitIntInsn(final int
the opcode of the instruction to be visited. This opcode is either BIPUSH, SIPUSH
or NEWARRAY. opcode, final int the operand of the instruction to be visited. operand)When opcode is BIPUSH, operand value should be between Byte.MIN_VALUE and Byte.MAX_VALUE. When opcode is SIPUSH, operand value should be between Short.MIN_VALUE and Short.MAX_VALUE. When opcode is NEWARRAY, operand value should be one of Opcodes#T_BOOLEAN , Opcodes#T_CHAR , Opcodes#T_FLOAT , Opcodes#T_DOUBLE , Opcodes#T_BYTE ,
Opcodes#T_SHORT , Opcodes#T_INT or Opcodes#T_LONG .Overrides jdk. Visits an instruction with a single int operand. |
public void | visitInvokeDynamicInsn(final String
the method's name. name, final String the method's descriptor (see descriptor, final Handle Type ).the bootstrap method. bootstrapMethodHandle, final Object... bootstrapMethodArguments)Overrides jdk. Visits an invokedynamic instruction. |
public void | visitJumpInsn(final int
the opcode of the type instruction to be visited. This opcode is either 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 IFNONNULL. opcode, final 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. label)Overrides jdk. Visits a jump instruction. |
public void | visitLabel(final Label
a label)Label object.Overrides jdk. Visits a label. |
public void | visitLdcInsn(final Object
the constant to be loaded on the stack. This parameter must be a non null value)Integer , a Float , a Long , a Double , a String , a Type of OBJECT or ARRAY sort for .class constants, for classes whose version is
49, a Type of METHOD sort for MethodType, a Handle for MethodHandle
constants, for classes whose version is 51 or a ConstantDynamic for a constant
dynamic for classes whose version is 55.Overrides jdk. Visits a LDC instruction. |
public void | visitLineNumber(final int
a line number. This number refers to the source file from which the class was
compiled. line, final Label the first instruction corresponding to this line number. start)Overrides jdk. Visits a line number declaration. |
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 jdk. Visits a local variable declaration. |
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 jdk. Visits an annotation on a local variable type. |
public void | visitLookupSwitchInsn(final Label
beginning of the default handler block. dflt, final int[] the values of the keys. keys, final Label[] beginnings of the handler blocks. labels)labels[i] is the beginning of the
handler block for the keys[i] key.Overrides jdk. Visits a LOOKUPSWITCH instruction. |
public void | visitMaxs(final int
maximum stack size of the method. maxStack, final int maximum number of local variables for the method. maxLocals)Overrides jdk. Visits the maximum stack size and the maximum number of local variables of the method. |
public void | visitMethodInsn(final int
the opcode of the type instruction to be visited. This opcode is either
INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or INVOKEINTERFACE. opcode, final String the internal name of the method's owner class (see owner, final String Type#getInternalName() ).the method's name. name, final String the method's descriptor (see descriptor, final boolean Type ).if the method's owner class is an interface. isInterface)Overrides jdk. Visits a method instruction. |
public void | visitMultiANewArrayInsn(final String
an array type descriptor (see descriptor, final int Type ).the number of dimensions of the array to allocate. numDimensions)Overrides jdk. Visits a MULTIANEWARRAY instruction. |
public void | visitParameter(final String
parameter name or null if none is provided. name, final int the parameter's access flags, only access)ACC_FINAL , ACC_SYNTHETIC
or/and ACC_MANDATED are allowed (see Opcodes ).Overrides jdk. Visits a parameter of this method. |
public AnnotationVisitor | visitParameterAnnotation(final int
the parameter index. This index must be strictly smaller than the number of
parameters in the method descriptor, and strictly smaller than the parameter count
specified in parameter, final String visitAnnotableParameterCount .Important Note a parameter index i is not required to correspond to the i'th parameter descriptor in the method descriptor, in particular in case of synthetic parameters (see https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.18). the class descriptor of the annotation class. descriptor, final boolean true if the annotation is visible at runtime. visible)Overrides jdk. Visits an annotation of a parameter this method. |
public void | visitTableSwitchInsn(final int
the minimum key value. min, final int the maximum key value. max, final Label beginning of the default handler block. dflt, final Label... beginnings of the handler blocks. labels)labels[i] is the beginning of the
handler block for the min + i key.Overrides jdk. Visits a TABLESWITCH instruction. |
public AnnotationVisitor | visitTryCatchAnnotation(final int
a reference to the annotated type. The sort of this type reference must be
typeRef, final TypePath TypeReference#EXCEPTION_PARAMETER . 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 String the class descriptor of the annotation class. descriptor, final boolean true if the annotation is visible at runtime. visible)Overrides jdk. Visits an annotation on an exception handler type. |
public void | visitTryCatchBlock(final Label
the beginning of the exception handler's scope (inclusive). start, final Label the end of the exception handler's scope (exclusive). end, final Label the beginning of the exception handler's code. handler, final String the internal name of the type of exceptions handled by the handler (see type)Type#getInternalName() ), or null to catch any exceptions (for "finally"
blocks).Overrides jdk. Visits a try catch block. |
public AnnotationVisitor | visitTypeAnnotation(final int
a reference to the annotated type. The sort of this type reference must be
typeRef, final TypePath TypeReference#METHOD_TYPE_PARAMETER , TypeReference#METHOD_TYPE_PARAMETER_BOUND , TypeReference#METHOD_RETURN , TypeReference#METHOD_RECEIVER , TypeReference#METHOD_FORMAL_PARAMETER or TypeReference#THROWS . 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 String the class descriptor of the annotation class. descriptor, final boolean true if the annotation is visible at runtime. visible)Overrides jdk. Visits an annotation on a type in the method signature. |
public void | visitTypeInsn(final int
the opcode of the type instruction to be visited. This opcode is either NEW,
ANEWARRAY, CHECKCAST or INSTANCEOF. opcode, final String the operand of the instruction to be visited. This operand must be the internal
name of an object or array class (see type)Type#getInternalName() ).Overrides jdk. Visits a type instruction. |
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 jdk. Visits a local variable instruction. |