Top Description Fields Constructors Methods
jdk.internal.org.objectweb.asm.util

public final Class TraceMethodVisitor

extends MethodVisitor
Class Inheritance
Imports
jdk.internal.org.objectweb.asm.AnnotationVisitor, .Attribute, .Handle, .Label, .MethodVisitor, .Opcodes, .TypePath

A MethodVisitor that prints the methods it visits with a Printer.
Author
Eric Bruneton

Field Summary

Modifier and TypeField and Description
public final Printer
p

The printer to convert the visited method into text.

Inherited from jdk.internal.org.objectweb.asm.MethodVisitor:
apimv

Constructor Summary

AccessConstructor and Description
public
TraceMethodVisitor(final Printer
the printer to convert the visited method into text.
printer
)

Constructs a new TraceMethodVisitor.

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 TraceMethodVisitor.

Method Summary

Modifier and TypeMethod 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.internal.org.objectweb.asm.MethodVisitor.visitAnnotableParameterCount.

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.internal.org.objectweb.asm.MethodVisitor.visitAnnotation.

Visits an annotation of this method.

public AnnotationVisitor
visitAnnotationDefault()

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitAnnotationDefault.

Visits the default value of this annotation interface method.

public void
visitAttribute(final Attribute
an attribute.
attribute
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitAttribute.

Visits a non standard attribute of this method.

public void
visitCode()

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitCode.

Starts the visit of the method's code, if any (i.e. non abstract method).

public void
visitEnd()

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitEnd.

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 Type#getInternalName()).
owner
,
final String
the field's name.
name
,
final String
the field's descriptor (see Type).
descriptor
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitFieldInsn.

Visits a field instruction.

public void
visitFrame(final int
the type of this stack map frame. Must be 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.
type
,
final int
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 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).
local
,
final int
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.internal.org.objectweb.asm.MethodVisitor.visitFrame.

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.internal.org.objectweb.asm.MethodVisitor.visitIincInsn.

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.internal.org.objectweb.asm.MethodVisitor.visitInsn.

Visits a zero operand instruction.

public AnnotationVisitor
visitInsnAnnotation(final int typeRef, final TypePath
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.internal.org.objectweb.asm.MethodVisitor.visitInsnAnnotation.

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.
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.
operand
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitIntInsn.

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 Type).
descriptor
,
final Handle
the bootstrap method.
bootstrapMethodHandle
,
final Object...
the bootstrap method constant arguments. Each argument must be an Integer, Float, Long, Double, String, Type, Handle or ConstantDynamic value. This method is allowed to modify the content of the array so a caller should expect that this array may change.
bootstrapMethodArguments
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn.

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.internal.org.objectweb.asm.MethodVisitor.visitJumpInsn.

Visits a jump instruction.

public void
visitLabel(final Label
a Label object.
label
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitLabel.

Visits a label.

public void
visitLdcInsn(final Object
the constant to be loaded on the stack. This parameter must be a non null 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.
value
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitLdcInsn.

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.internal.org.objectweb.asm.MethodVisitor.visitLineNumber.

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.internal.org.objectweb.asm.MethodVisitor.visitLocalVariable.

Visits a local variable declaration.

public AnnotationVisitor
visitLocalVariableAnnotation(final int
a reference to the annotated type. The sort of this type reference must be TypeReference#LOCAL_VARIABLE or TypeReference#RESOURCE_VARIABLE. See TypeReference.
typeRef
,
final TypePath
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.internal.org.objectweb.asm.MethodVisitor.visitLocalVariableAnnotation.

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[i] is the beginning of the handler block for the keys[i] key.
labels
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitLookupSwitchInsn.

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.internal.org.objectweb.asm.MethodVisitor.visitMaxs.

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 Type#getInternalName()).
owner
,
final String
the method's name.
name
,
final String
the method's descriptor (see Type).
descriptor
,
final boolean
if the method's owner class is an interface.
isInterface
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitMethodInsn.

Visits a method instruction.

public void
visitMultiANewArrayInsn(final String
an array type descriptor (see Type).
descriptor
,
final int
the number of dimensions of the array to allocate.
numDimensions
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitMultiANewArrayInsn.

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 ACC_FINAL, ACC_SYNTHETIC or/and ACC_MANDATED are allowed (see Opcodes).
access
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitParameter.

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 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).

parameter
,
final String
the class descriptor of the annotation class.
descriptor
,
final boolean
true if the annotation is visible at runtime.
visible
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitParameterAnnotation.

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[i] is the beginning of the handler block for the min + i key.
labels
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitTableSwitchInsn.

Visits a TABLESWITCH instruction.

public AnnotationVisitor
visitTryCatchAnnotation(final int
a reference to the annotated type. The sort of this type reference must be TypeReference#EXCEPTION_PARAMETER. See TypeReference.
typeRef
,
final TypePath
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.internal.org.objectweb.asm.MethodVisitor.visitTryCatchAnnotation.

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#getInternalName()), or null to catch any exceptions (for "finally" blocks).
type
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitTryCatchBlock.

Visits a try catch block.

public AnnotationVisitor
visitTypeAnnotation(final int typeRef, final TypePath
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.internal.org.objectweb.asm.MethodVisitor.visitTypeAnnotation.

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#getInternalName()).
type
)

Overrides jdk.internal.org.objectweb.asm.MethodVisitor.visitTypeInsn.

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.internal.org.objectweb.asm.MethodVisitor.visitVarInsn.

Visits a local variable instruction.

Inherited from jdk.internal.org.objectweb.asm.MethodVisitor:
getDelegatevisitMethodInsn