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

    Constructors
    Constructor
    Description
    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
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    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
     
    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
     
    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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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 used
      isInit - Determines if the method is an initializer method
      instrumentationState - The current state of instrumentation
      classNames - The class names
      methodName - 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 class org.objectweb.asm.MethodVisitor
    • visitLineNumber

      public void visitLineNumber(int lineNumber, org.objectweb.asm.Label label)
      Visits a line number declaration.
      Overrides:
      visitLineNumber in class org.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 class org.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 class org.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 class org.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

      public void visitTypeInsn(int opcode, String type)
      Visits a type instruction. A type instruction is an instruction that takes the internal name of a class as parameter.
      Overrides:
      visitTypeInsn in class org.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

      public void visitFieldInsn(int opcode, String owner, String name, String desc)
      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 class org.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 class org.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

      public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf)
      Visits a method instruction. A method instruction is an instruction that invokes a method.
      Overrides:
      visitMethodInsn in class org.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 class org.objectweb.asm.MethodVisitor
    • visitLdcInsn

      public void visitLdcInsn(Object cst)
      Overrides:
      visitLdcInsn in class org.objectweb.asm.MethodVisitor
    • visitIincInsn

      public void visitIincInsn(int var, int increment)
      Overrides:
      visitIincInsn in class org.objectweb.asm.MethodVisitor
    • visitTableSwitchInsn

      public void visitTableSwitchInsn(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label... labels)
      Overrides:
      visitTableSwitchInsn in class org.objectweb.asm.MethodVisitor
    • visitLookupSwitchInsn

      public void visitLookupSwitchInsn(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels)
      Overrides:
      visitLookupSwitchInsn in class org.objectweb.asm.MethodVisitor
    • visitMultiANewArrayInsn

      public void visitMultiANewArrayInsn(String desc, int dims)
      Overrides:
      visitMultiANewArrayInsn in class org.objectweb.asm.MethodVisitor
    • visitMaxs

      public void visitMaxs(int maxStack, int maxLocals)
      Overrides:
      visitMaxs in class org.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 class org.objectweb.asm.MethodVisitor