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, mvFields 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
ConstructorsConstructorDescriptionInstructionMethodAdapter(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 TypeMethodDescriptionvoidStarts the visit of the method's code, if any (i.e.voidvisitFieldInsn(int opcode, String owner, String name, String desc) Visits a field instruction.voidvisitIincInsn(int var, int increment) voidvisitInsn(int opcode) Visits a zero operand instruction.voidvisitIntInsn(int opcode, int operand) Visits an instruction with a single int operand.voidvisitInvokeDynamicInsn(String name, String desc, org.objectweb.asm.Handle bsm, Object... bsmArgs) Visits an invokedynamic instruction.voidvisitJumpInsn(int opcode, org.objectweb.asm.Label label) voidvisitLdcInsn(Object cst) voidvisitLineNumber(int lineNumber, org.objectweb.asm.Label label) Visits a line number declaration.voidvisitLookupSwitchInsn(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels) voidvisitMaxs(int maxStack, int maxLocals) voidvisitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) Visits a method instruction.voidvisitMultiANewArrayInsn(String desc, int dims) voidvisitTableSwitchInsn(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label... labels) voidvisitTryCatchBlock(org.objectweb.asm.Label label, org.objectweb.asm.Label label1, org.objectweb.asm.Label label2, String s) voidvisitTypeInsn(int opcode, String type) Visits a type instruction.voidvisitVarInsn(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:
visitCodein classorg.objectweb.asm.MethodVisitor
-
visitLineNumber
public void visitLineNumber(int lineNumber, org.objectweb.asm.Label label) Visits a line number declaration.- Overrides:
visitLineNumberin 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:
visitInsnin 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:
visitVarInsnin 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:
visitIntInsnin 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:
visitTypeInsnin 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:
visitFieldInsnin 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:
visitInvokeDynamicInsnin 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:
visitMethodInsnin 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:
visitJumpInsnin classorg.objectweb.asm.MethodVisitor
-
visitLdcInsn
- Overrides:
visitLdcInsnin classorg.objectweb.asm.MethodVisitor
-
visitIincInsn
public void visitIincInsn(int var, int increment) - Overrides:
visitIincInsnin classorg.objectweb.asm.MethodVisitor
-
visitTableSwitchInsn
public void visitTableSwitchInsn(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label... labels) - Overrides:
visitTableSwitchInsnin classorg.objectweb.asm.MethodVisitor
-
visitLookupSwitchInsn
public void visitLookupSwitchInsn(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels) - Overrides:
visitLookupSwitchInsnin classorg.objectweb.asm.MethodVisitor
-
visitMultiANewArrayInsn
- Overrides:
visitMultiANewArrayInsnin classorg.objectweb.asm.MethodVisitor
-
visitMaxs
public void visitMaxs(int maxStack, int maxLocals) - Overrides:
visitMaxsin 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:
visitTryCatchBlockin classorg.objectweb.asm.MethodVisitor
-