Class InstructionMethodAdapter
java.lang.Object
org.objectweb.asm.MethodVisitor
de.uzl.its.swat.instrument.instruction.InstructionMethodAdapter
- All Implemented Interfaces:
org.objectweb.asm.Opcodes
public class InstructionMethodAdapter
extends org.objectweb.asm.MethodVisitor
implements org.objectweb.asm.Opcodes
A visitor to visit a Java method
-
Field Summary
Fields inherited from class org.objectweb.asm.MethodVisitor
api, mv
Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V9
-
Constructor Summary
ConstructorDescriptionInstructionMethodAdapter
(org.objectweb.asm.MethodVisitor mv, boolean isInit, GlobalStateForInstrumentation instrumentationState, ClassNames classNames, String methodName) Constructor that calls the super from the default MethodVisitor and sets some locals -
Method Summary
Modifier and TypeMethodDescriptionvoid
Starts the visit of the method's code, if any (i.e.void
visitFieldInsn
(int opcode, String owner, String name, String desc) Visits a field instruction.void
visitIincInsn
(int var, int increment) void
visitInsn
(int opcode) Visits a zero operand instruction.void
visitIntInsn
(int opcode, int operand) Visits an instruction with a single int operand.void
visitInvokeDynamicInsn
(String name, String desc, org.objectweb.asm.Handle bsm, Object... bsmArgs) Visits an invokedynamic instruction.void
visitJumpInsn
(int opcode, org.objectweb.asm.Label label) void
visitLdcInsn
(Object cst) void
visitLineNumber
(int lineNumber, org.objectweb.asm.Label label) Visits a line number declaration.void
visitLookupSwitchInsn
(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels) void
visitMaxs
(int maxStack, int maxLocals) void
visitMethodInsn
(int opcode, String owner, String name, String desc, boolean itf) Visits a method instruction.void
visitMultiANewArrayInsn
(String desc, int dims) void
visitTableSwitchInsn
(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label... labels) void
visitTryCatchBlock
(org.objectweb.asm.Label label, org.objectweb.asm.Label label1, org.objectweb.asm.Label label2, String s) void
visitTypeInsn
(int opcode, String type) Visits a type instruction.void
visitVarInsn
(int opcode, int var) Visits a local variable instruction.Methods inherited from class org.objectweb.asm.MethodVisitor
getDelegate, visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitEnd, visitFrame, visitInsnAnnotation, visitLabel, visitLocalVariable, visitLocalVariableAnnotation, visitMethodInsn, visitParameter, visitParameterAnnotation, visitTryCatchAnnotation, visitTypeAnnotation
-
Constructor Details
-
InstructionMethodAdapter
public InstructionMethodAdapter(org.objectweb.asm.MethodVisitor mv, boolean isInit, GlobalStateForInstrumentation instrumentationState, ClassNames classNames, String methodName) Constructor that calls the super from the default MethodVisitor and sets some locals- Parameters:
mv
- The MethodVisitor that should be usedisInit
- Determines if the method is an initializer methodinstrumentationState
- The current state of instrumentationclassNames
- The class namesmethodName
- The Method name
-
-
Method Details
-
visitCode
public void visitCode()Starts the visit of the method's code, if any (i.e. non abstract method).- Overrides:
visitCode
in classorg.objectweb.asm.MethodVisitor
-
visitLineNumber
public void visitLineNumber(int lineNumber, org.objectweb.asm.Label label) Visits a line number declaration.- Overrides:
visitLineNumber
in classorg.objectweb.asm.MethodVisitor
- Parameters:
lineNumber
- - a line number. This number refers to the source file from which the class was compiled.label
- - the first instruction corresponding to this line number.
-
visitInsn
public void visitInsn(int opcode) Visits a zero operand instruction.- Overrides:
visitInsn
in classorg.objectweb.asm.MethodVisitor
- Parameters:
opcode
- - 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.
-
visitVarInsn
public void visitVarInsn(int opcode, int var) Visits a local variable instruction. A local variable instruction is an instruction that loads or stores the value of a local variable.- Overrides:
visitVarInsn
in classorg.objectweb.asm.MethodVisitor
- Parameters:
opcode
- 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.var
- the operand of the instruction to be visited. This operand is the index of a local variable.
-
visitIntInsn
public void visitIntInsn(int opcode, int operand) Visits an instruction with a single int operand.- Overrides:
visitIntInsn
in classorg.objectweb.asm.MethodVisitor
- Parameters:
opcode
- the opcode of the instruction to be visited. This opcode is either BIPUSH, SIPUSH or NEWARRAY.operand
- 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.
-
visitTypeInsn
Visits a type instruction. A type instruction is an instruction that takes the internal name of a class as parameter.- Overrides:
visitTypeInsn
in classorg.objectweb.asm.MethodVisitor
- Parameters:
opcode
- the opcode of the type instruction to be visited. This opcode is either NEW, ANEWARRAY, CHECKCAST or INSTANCEOF.type
- the operand of the instruction to be visited. This operand must be the internal name of an object or array class (see Type.getInternalName()).
-
visitFieldInsn
Visits a field instruction. A field instruction is an instruction that loads or stores the value of a field of an object.- Overrides:
visitFieldInsn
in classorg.objectweb.asm.MethodVisitor
- Parameters:
opcode
- the opcode of the type instruction to be visited. This opcode is either GETSTATIC, PUTSTATIC, GETFIELD or PUTFIELD.owner
- the internal name of the field's owner class (see Type.getInternalName()).name
- the field's name.desc
- the field's descriptor (see Type).
-
visitInvokeDynamicInsn
public void visitInvokeDynamicInsn(String name, String desc, org.objectweb.asm.Handle bsm, Object... bsmArgs) Visits an invokedynamic instruction.- Overrides:
visitInvokeDynamicInsn
in classorg.objectweb.asm.MethodVisitor
- Parameters:
name
- the method's name.desc
- the method's descriptor (see Type).bsm
- the bootstrap method.bsmArgs
- 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.
-
visitMethodInsn
Visits a method instruction. A method instruction is an instruction that invokes a method.- Overrides:
visitMethodInsn
in classorg.objectweb.asm.MethodVisitor
- Parameters:
opcode
- the opcode of the type instruction to be visited. This opcode is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or INVOKEINTERFACE.owner
- the internal name of the method's owner class (see Type.getInternalName()).name
- the method's name.desc
- the method's descriptor (see Type).itf
- if the method's owner class is an interface.
-
visitJumpInsn
public void visitJumpInsn(int opcode, org.objectweb.asm.Label label) - Overrides:
visitJumpInsn
in classorg.objectweb.asm.MethodVisitor
-
visitLdcInsn
- Overrides:
visitLdcInsn
in classorg.objectweb.asm.MethodVisitor
-
visitIincInsn
public void visitIincInsn(int var, int increment) - Overrides:
visitIincInsn
in classorg.objectweb.asm.MethodVisitor
-
visitTableSwitchInsn
public void visitTableSwitchInsn(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label... labels) - Overrides:
visitTableSwitchInsn
in classorg.objectweb.asm.MethodVisitor
-
visitLookupSwitchInsn
public void visitLookupSwitchInsn(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels) - Overrides:
visitLookupSwitchInsn
in classorg.objectweb.asm.MethodVisitor
-
visitMultiANewArrayInsn
- Overrides:
visitMultiANewArrayInsn
in classorg.objectweb.asm.MethodVisitor
-
visitMaxs
public void visitMaxs(int maxStack, int maxLocals) - Overrides:
visitMaxs
in classorg.objectweb.asm.MethodVisitor
-
visitTryCatchBlock
public void visitTryCatchBlock(org.objectweb.asm.Label label, org.objectweb.asm.Label label1, org.objectweb.asm.Label label2, String s) - Overrides:
visitTryCatchBlock
in classorg.objectweb.asm.MethodVisitor
-