类 InstructionAdapter

java.lang.Object
org.beetl.ow2.asm.MethodVisitor
org.beetl.ow2.asm.commons.InstructionAdapter

public class InstructionAdapter extends MethodVisitor
A MethodVisitor providing a more detailed API to generate and transform instructions.
作者:
Eric Bruneton
  • 字段详细资料

    • OBJECT_TYPE

      public static final Type OBJECT_TYPE
  • 构造器详细资料

  • 方法详细资料

    • visitInsn

      public void visitInsn(int opcode)
      从类复制的说明: MethodVisitor
      Visits a zero operand instruction.
      覆盖:
      visitInsn 在类中 MethodVisitor
      参数:
      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.
    • visitIntInsn

      public void visitIntInsn(int opcode, int operand)
      从类复制的说明: MethodVisitor
      Visits an instruction with a single int operand.
      覆盖:
      visitIntInsn 在类中 MethodVisitor
      参数:
      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.
    • visitVarInsn

      public void visitVarInsn(int opcode, int var)
      从类复制的说明: MethodVisitor
      Visits a local variable instruction. A local variable instruction is an instruction that loads or stores the value of a local variable.
      覆盖:
      visitVarInsn 在类中 MethodVisitor
      参数:
      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.
    • visitTypeInsn

      public void visitTypeInsn(int opcode, String type)
      从类复制的说明: MethodVisitor
      Visits a type instruction. A type instruction is an instruction that takes the internal className of a class as parameter.
      覆盖:
      visitTypeInsn 在类中 MethodVisitor
      参数:
      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 className of an object or array class (see getInternalName).
    • visitFieldInsn

      public void visitFieldInsn(int opcode, String owner, String name, String desc)
      从类复制的说明: MethodVisitor
      Visits a field instruction. A field instruction is an instruction that loads or stores the value of a field of an object.
      覆盖:
      visitFieldInsn 在类中 MethodVisitor
      参数:
      opcode - the opcode of the type instruction to be visited. This opcode is either GETSTATIC, PUTSTATIC, GETFIELD or PUTFIELD.
      owner - the internal className of the field's owner class (see getInternalName).
      name - the field's className.
      desc - the field's descriptor (see Type).
    • visitMethodInsn

      @Deprecated public void visitMethodInsn(int opcode, String owner, String name, String desc)
      已过时。
      从类复制的说明: MethodVisitor
      Visits a method instruction. A method instruction is an instruction that invokes a method.
      覆盖:
      visitMethodInsn 在类中 MethodVisitor
      参数:
      opcode - the opcode of the type instruction to be visited. This opcode is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or INVOKEINTERFACE.
      owner - the internal className of the method's owner class (see getInternalName).
      name - the method's className.
      desc - the method's descriptor (see Type).
    • visitMethodInsn

      public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf)
      从类复制的说明: MethodVisitor
      Visits a method instruction. A method instruction is an instruction that invokes a method.
      覆盖:
      visitMethodInsn 在类中 MethodVisitor
      参数:
      opcode - the opcode of the type instruction to be visited. This opcode is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or INVOKEINTERFACE.
      owner - the internal className of the method's owner class (see getInternalName).
      name - the method's className.
      desc - the method's descriptor (see Type).
      itf - if the method's owner class is an interface.
    • visitInvokeDynamicInsn

      public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs)
      从类复制的说明: MethodVisitor
      Visits an invokedynamic instruction.
      覆盖:
      visitInvokeDynamicInsn 在类中 MethodVisitor
      参数:
      name - the method's className.
      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 or Handle value. This method is allowed to modify the content of the array so a caller should expect that this array may change.
    • visitJumpInsn

      public void visitJumpInsn(int opcode, Label label)
      从类复制的说明: MethodVisitor
      Visits a jump instruction. A jump instruction is an instruction that may jump to another instruction.
      覆盖:
      visitJumpInsn 在类中 MethodVisitor
      参数:
      opcode - 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.
      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.
    • visitLabel

      public void visitLabel(Label label)
      从类复制的说明: MethodVisitor
      Visits a label. A label designates the instruction that will be visited just after it.
      覆盖:
      visitLabel 在类中 MethodVisitor
      参数:
      label - a Label object.
    • visitLdcInsn

      public void visitLdcInsn(Object cst)
      从类复制的说明: MethodVisitor
      Visits a LDC instruction. Note that new constant types may be added in future versions of the Java Virtual Machine. To easily detect new constant types, implementations of this method should check for unexpected constant types, like this:
       if (cst instanceof Integer) {
           // ...
       } else if (cst instanceof Float) {
           // ...
       } else if (cst instanceof Long) {
           // ...
       } else if (cst instanceof Double) {
           // ...
       } else if (cst instanceof String) {
           // ...
       } else if (cst instanceof Type) {
           int sort = ((Type) cst).getSort();
           if (sort == Type.OBJECT) {
               // ...
           } else if (sort == Type.ARRAY) {
               // ...
           } else if (sort == Type.METHOD) {
               // ...
           } else {
               // throw an exception
           }
       } else if (cst instanceof Handle) {
           // ...
       } else {
           // throw an exception
       }
       
      覆盖:
      visitLdcInsn 在类中 MethodVisitor
      参数:
      cst - 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.0, a Type of METHOD sort or a Handle for MethodType and MethodHandle constants, for classes whose version is 51.0.
    • visitIincInsn

      public void visitIincInsn(int var, int increment)
      从类复制的说明: MethodVisitor
      Visits an IINC instruction.
      覆盖:
      visitIincInsn 在类中 MethodVisitor
      参数:
      var - index of the local variable to be incremented.
      increment - amount to increment the local variable by.
    • visitTableSwitchInsn

      public void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels)
      从类复制的说明: MethodVisitor
      Visits a TABLESWITCH instruction.
      覆盖:
      visitTableSwitchInsn 在类中 MethodVisitor
      参数:
      min - the minimum key value.
      max - the maximum key value.
      dflt - beginning of the default handler block.
      labels - beginnings of the handler blocks. labels[i] is the beginning of the handler block for the min + i key.
    • visitLookupSwitchInsn

      public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
      从类复制的说明: MethodVisitor
      Visits a LOOKUPSWITCH instruction.
      覆盖:
      visitLookupSwitchInsn 在类中 MethodVisitor
      参数:
      dflt - beginning of the default handler block.
      keys - the values of the keys.
      labels - beginnings of the handler blocks. labels[i] is the beginning of the handler block for the keys[i] key.
    • visitMultiANewArrayInsn

      public void visitMultiANewArrayInsn(String desc, int dims)
      从类复制的说明: MethodVisitor
      Visits a MULTIANEWARRAY instruction.
      覆盖:
      visitMultiANewArrayInsn 在类中 MethodVisitor
      参数:
      desc - an array type descriptor (see Type).
      dims - number of dimensions of the array to allocate.
    • nop

      public void nop()
    • aconst

      public void aconst(Object cst)
    • iconst

      public void iconst(int cst)
    • lconst

      public void lconst(long cst)
    • fconst

      public void fconst(float cst)
    • dconst

      public void dconst(double cst)
    • tconst

      public void tconst(Type type)
    • hconst

      public void hconst(Handle handle)
    • load

      public void load(int var, Type type)
    • aload

      public void aload(Type type)
    • store

      public void store(int var, Type type)
    • astore

      public void astore(Type type)
    • pop

      public void pop()
    • pop2

      public void pop2()
    • dup

      public void dup()
    • dup2

      public void dup2()
    • dupX1

      public void dupX1()
    • dupX2

      public void dupX2()
    • dup2X1

      public void dup2X1()
    • dup2X2

      public void dup2X2()
    • swap

      public void swap()
    • add

      public void add(Type type)
    • sub

      public void sub(Type type)
    • mul

      public void mul(Type type)
    • div

      public void div(Type type)
    • rem

      public void rem(Type type)
    • neg

      public void neg(Type type)
    • shl

      public void shl(Type type)
    • shr

      public void shr(Type type)
    • ushr

      public void ushr(Type type)
    • and

      public void and(Type type)
    • or

      public void or(Type type)
    • xor

      public void xor(Type type)
    • iinc

      public void iinc(int var, int increment)
    • cast

      public void cast(Type from, Type to)
    • lcmp

      public void lcmp()
    • cmpl

      public void cmpl(Type type)
    • cmpg

      public void cmpg(Type type)
    • ifeq

      public void ifeq(Label label)
    • ifne

      public void ifne(Label label)
    • iflt

      public void iflt(Label label)
    • ifge

      public void ifge(Label label)
    • ifgt

      public void ifgt(Label label)
    • ifle

      public void ifle(Label label)
    • ificmpeq

      public void ificmpeq(Label label)
    • ificmpne

      public void ificmpne(Label label)
    • ificmplt

      public void ificmplt(Label label)
    • ificmpge

      public void ificmpge(Label label)
    • ificmpgt

      public void ificmpgt(Label label)
    • ificmple

      public void ificmple(Label label)
    • ifacmpeq

      public void ifacmpeq(Label label)
    • ifacmpne

      public void ifacmpne(Label label)
    • goTo

      public void goTo(Label label)
    • jsr

      public void jsr(Label label)
    • ret

      public void ret(int var)
    • tableswitch

      public void tableswitch(int min, int max, Label dflt, Label... labels)
    • lookupswitch

      public void lookupswitch(Label dflt, int[] keys, Label[] labels)
    • areturn

      public void areturn(Type t)
    • getstatic

      public void getstatic(String owner, String name, String desc)
    • putstatic

      public void putstatic(String owner, String name, String desc)
    • getfield

      public void getfield(String owner, String name, String desc)
    • putfield

      public void putfield(String owner, String name, String desc)
    • invokevirtual

      @Deprecated public void invokevirtual(String owner, String name, String desc)
      已过时。
    • invokevirtual

      public void invokevirtual(String owner, String name, String desc, boolean itf)
    • invokespecial

      @Deprecated public void invokespecial(String owner, String name, String desc)
      已过时。
    • invokespecial

      public void invokespecial(String owner, String name, String desc, boolean itf)
    • invokestatic

      @Deprecated public void invokestatic(String owner, String name, String desc)
      已过时。
    • invokestatic

      public void invokestatic(String owner, String name, String desc, boolean itf)
    • invokeinterface

      public void invokeinterface(String owner, String name, String desc)
    • invokedynamic

      public void invokedynamic(String name, String desc, Handle bsm, Object[] bsmArgs)
    • anew

      public void anew(Type type)
    • newarray

      public void newarray(Type type)
    • arraylength

      public void arraylength()
    • athrow

      public void athrow()
    • checkcast

      public void checkcast(Type type)
    • instanceOf

      public void instanceOf(Type type)
    • monitorenter

      public void monitorenter()
    • monitorexit

      public void monitorexit()
    • multianewarray

      public void multianewarray(String desc, int dims)
    • ifnull

      public void ifnull(Label label)
    • ifnonnull

      public void ifnonnull(Label label)
    • mark

      public void mark(Label label)