Top Description Fields Constructors Methods
org.objectweb.asm.tree

public Class MethodNode

extends MethodVisitor
Class Inheritance
Imports
java.util.ArrayList, .List, org.objectweb.asm.AnnotationVisitor, .Attribute, .ClassVisitor, .ConstantDynamic, .Handle, .Label, .MethodVisitor, .Opcodes, .Type, .TypePath

A node that represents a method.
Author
Eric Bruneton

Field Summary

Modifier and TypeField and Description
public int
access

The method's access flags (see Opcodes).

public Object
annotationDefault

The default value of this annotation interface method.

public List<Attribute>
attrs

The non standard attributes of this method.

public String
desc

The method's descriptor (see Type).

public List<String>
exceptions

The internal names of the method's exception classes (see Type#getInternalName()).

public InsnList
instructions

The instructions of this method.

public int
invisibleAnnotableParameterCount

The number of method parameters than can have runtime invisible annotations.

public List<AnnotationNode>
invisibleAnnotations

The runtime invisible annotations of this method.

public List<LocalVariableAnnotationNode>
invisibleLocalVariableAnnotations

The invisible local variable annotations of this method.

public List<AnnotationNode>[]
invisibleParameterAnnotations

The runtime invisible parameter annotations of this method.

public List<TypeAnnotationNode>
invisibleTypeAnnotations

The runtime invisible type annotations of this method.

public List<LocalVariableNode>
localVariables

The local variables of this method.

public int
maxLocals

The maximum number of local variables of this method.

public int
maxStack

The maximum stack size of this method.

public String
name

The method's name.

public List<ParameterNode>
parameters

The method parameter info (access flags and name).

public String
signature

The method's signature.

public List<TryCatchBlockNode>
tryCatchBlocks

The try catch blocks of this method.

public int
visibleAnnotableParameterCount

The number of method parameters than can have runtime visible annotations.

public List<AnnotationNode>
visibleAnnotations

The runtime visible annotations of this method.

public List<LocalVariableAnnotationNode>
visibleLocalVariableAnnotations

The visible local variable annotations of this method.

public List<AnnotationNode>[]
visibleParameterAnnotations

The runtime visible parameter annotations of this method.

public List<TypeAnnotationNode>
visibleTypeAnnotations

The runtime visible type annotations of this method.

private boolean
visited

Whether the accept method has been called on this object.

Inherited from org.objectweb.asm.MethodVisitor:
apimv

Constructor Summary

AccessConstructor and Description
public
MethodNode()

Constructs an uninitialized MethodNode.

public
MethodNode(final int
the ASM API version implemented by this visitor. Must be one of the ASMx values in Opcodes.
api
)

Constructs an uninitialized MethodNode.

public
MethodNode(final int
the method's access flags (see Opcodes). This parameter also indicates if the method is synthetic and/or deprecated.
access
,
final String
the method's name.
name
,
final String
the method's descriptor (see Type).
descriptor
,
final String
the method's signature. May be null.
signature
,
final String[]
the internal names of the method's exception classes (see Type#getInternalName()). May be null.
exceptions
)

Constructs a new MethodNode.

public
MethodNode(final int
the ASM API version implemented by this visitor. Must be one of the ASMx values in Opcodes.
api
,
final int
the method's access flags (see Opcodes). This parameter also indicates if the method is synthetic and/or deprecated.
access
,
final String
the method's name.
name
,
final String
the method's descriptor (see Type).
descriptor
,
final String
the method's signature. May be null.
signature
,
final String[]
the internal names of the method's exception classes (see Type#getInternalName()). May be null.
exceptions
)

Constructs a new MethodNode.

Method Summary

Modifier and TypeMethod and Description
public void
accept(final ClassVisitor
a class visitor.
classVisitor
)

Makes the given class visitor visit this method.

public void
accept(final MethodVisitor
a method visitor.
methodVisitor
)

Makes the given method visitor visit this method.

public void
check(final int
an ASM API version. Must be one of the ASMx values in Opcodes.
api
)

Checks that this method node is compatible with the given ASM API version.

protected LabelNode

Returns:

the LabelNode corresponding to label.
getLabelNode
(final Label
a Label.
label
)

Returns the LabelNode corresponding to the given Label.

private LabelNode[]
getLabelNodes(final Label[] labels)

private Object[]
getLabelNodes(final Object[] objects)

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

Visits an annotation of this method.
public AnnotationVisitor
visitAnnotationDefault()

Overrides org.objectweb.asm.MethodVisitor.visitAnnotationDefault.

Visits the default value of this annotation interface method.
public void
visitAttribute(final Attribute
an attribute.
attribute
)

Overrides org.objectweb.asm.MethodVisitor.visitAttribute.

Visits a non standard attribute of this method.
public void
visitCode()

Overrides org.objectweb.asm.MethodVisitor.visitCode.

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

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

Visits a jump instruction.
public void
visitLabel(final Label
a Label object.
label
)

Overrides 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 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 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 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 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 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 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.
opcodeAndSource
,
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 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 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 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 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 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 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 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 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 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 org.objectweb.asm.MethodVisitor.visitVarInsn.

Visits a local variable instruction.
Inherited from org.objectweb.asm.MethodVisitor:
getDelegatevisitMethodInsn