content: /***
   * ASM: a very small and fast Java bytecode manipulation framework
   * Copyright (c) 2000-2007 INRIA, France Telecom
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in the
   *    documentation and/or other materials provided with the distribution.
   * 3. Neither the name of the copyright holders nor the names of its
   *    contributors may be used to endorse or promote products derived from
   *    this software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
   * THE POSSIBILITY OF SUCH DAMAGE.
   */
  package com.alibaba.fastjson.asm;
  
  /**
   * Defines the JVM opcodes, access flags and array type codes. This interface does not define all the JVM opcodes
   * because some opcodes are automatically handled. For example, the xLOAD and xSTORE opcodes are automatically replaced
   * by xLOAD_n and xSTORE_n opcodes when possible. The xLOAD_n and xSTORE_n opcodes are therefore not defined in this
   * interface. Likewise for LDC, automatically replaced by LDC_W or LDC2_W when necessary, WIDE, GOTO_W and JSR_W.
   * 
   * @author Eric Bruneton
   * @author Eugene Kuleshov
   */
  public interface Opcodes {
  
      // versions
  
      // int V1_1 = 3 << 16 | 45;
      // int V1_2 = 0 << 16 | 46;
      // int V1_3 = 0 << 16 | 47;
      // int V1_4 = 0 << 16 | 48;
      int    V1_5                = 0 << 16 | 49;
      // int V1_6 = 0 << 16 | 50;
      // int V1_7 = 0 << 16 | 51;
  
      // access flags
  
      int    ACC_PUBLIC          = 0x0001;                 // class, field, method
      int    ACC_PRIVATE         = 0x0002;                 // class, field, method
      int    ACC_SUPER           = 0x0020;                 // class
      int    ACC_SYNTHETIC       = 0x1000;                 // class, field, method
  
      // ASM specific pseudo access flags
  
      int    ACC_DEPRECATED      = 0x20000;                // class, field, method
  
      // types for NEWARRAY
  
      int    T_BOOLEAN           = 4;
      int    T_CHAR              = 5;
      int    T_FLOAT             = 6;
      int    T_DOUBLE            = 7;
      int    T_BYTE              = 8;
      int    T_SHORT             = 9;
      int    T_INT               = 10;
      int    T_LONG              = 11;
  
      // Integer TOP = new Integer(0);
      // Integer INTEGER = new Integer(1);
      // Integer FLOAT = new Integer(2);
      // Integer DOUBLE = new Integer(3);
      // Integer LONG = new Integer(4);
      // Integer NULL = new Integer(5);
      // Integer UNINITIALIZED_THIS = new Integer(6);
  
      /**
       * Represents a owner of an invokedynamic call.
       */
      String INVOKEDYNAMIC_OWNER = "java/lang/dyn/Dynamic";
  
      // opcodes // visit method (- = idem)
  
      int    NOP                 = 0;                      // visitInsn
      int    ACONST_NULL         = 1;                      // -
      int    ICONST_M1           = 2;                      // -
      int    ICONST_0            = 3;                      // -
      int    ICONST_1            = 4;                      // -
      int    ICONST_2            = 5;                      // -
      int    ICONST_3            = 6;                      // -
      int    ICONST_4            = 7;                      // -
      int    ICONST_5            = 8;                      // -
      int    LCONST_0            = 9;                      // -
      int    LCONST_1            = 10;                     // -
      int    FCONST_0            = 11;                     // -
      int    FCONST_1            = 12;                     // -
      int    FCONST_2            = 13;                     // -
      int    DCONST_0            = 14;                     // -
      int    DCONST_1            = 15;                     // -
      int    BIPUSH              = 16;                     // visitIntInsn
  //    int    SIPUSH              = 17;                     // -
      int    LDC                 = 18;                     // visitLdcInsn
      // int LDC_W = 19; // -
      // int LDC2_W = 20; // -
      int    ILOAD               = 21;                     // visitVarInsn
      int    LLOAD               = 22;                     // -
      int    FLOAD               = 23;                     // -
      int    DLOAD               = 24;                     // -
      int    ALOAD               = 25;                     // -
      // int ILOAD_0 = 26; // -
      // int ILOAD_1 = 27; // -
      // int ILOAD_2 = 28; // -
      // int ILOAD_3 = 29; // -
      // int LLOAD_0 = 30; // -
      // int LLOAD_1 = 31; // -
      // int LLOAD_2 = 32; // -
      // int LLOAD_3 = 33; // -
      // int FLOAD_0 = 34; // -
      // int FLOAD_1 = 35; // -
      // int FLOAD_2 = 36; // -
      // int FLOAD_3 = 37; // -
      // int DLOAD_0 = 38; // -
      // int DLOAD_1 = 39; // -
      // int DLOAD_2 = 40; // -
      // int DLOAD_3 = 41; // -
      // int ALOAD_0 = 42; // -
      // int ALOAD_1 = 43; // -
      // int ALOAD_2 = 44; // -
      // int ALOAD_3 = 45; // -
      int    IALOAD              = 46;                     // visitInsn
      int    LALOAD              = 47;                     // -
      int    FALOAD              = 48;                     // -
      int    DALOAD              = 49;                     // -
      int    AALOAD              = 50;                     // -
      int    BALOAD              = 51;                     // -
      int    CALOAD              = 52;                     // -
      int    SALOAD              = 53;                     // -
      int    ISTORE              = 54;                     // visitVarInsn
      int    LSTORE              = 55;                     // -
      int    FSTORE              = 56;                     // -
      int    DSTORE              = 57;                     // -
      int    ASTORE              = 58;                     // -
      // int ISTORE_0 = 59; // -
      // int ISTORE_1 = 60; // -
      // int ISTORE_2 = 61; // -
      // int ISTORE_3 = 62; // -
      // int LSTORE_0 = 63; // -
      // int LSTORE_1 = 64; // -
      // int LSTORE_2 = 65; // -
      // int LSTORE_3 = 66; // -
      // int FSTORE_0 = 67; // -
      // int FSTORE_1 = 68; // -
      // int FSTORE_2 = 69; // -
      // int FSTORE_3 = 70; // -
      // int DSTORE_0 = 71; // -
      // int DSTORE_1 = 72; // -
      // int DSTORE_2 = 73; // -
      // int DSTORE_3 = 74; // -
      // int ASTORE_0 = 75; // -
      // int ASTORE_1 = 76; // -
      // int ASTORE_2 = 77; // -
      // int ASTORE_3 = 78; // -
      // int    IASTORE             = 79;                     // visitInsn
      // int    LASTORE             = 80;                     // -
      // int    FASTORE             = 81;                     // -
   // int    DASTORE             = 82;                     // -
   // int    AASTORE             = 83;                     // -
   // int    BASTORE             = 84;                     // -
   // int    CASTORE             = 85;                     // -
   // int    SASTORE             = 86;                     // -
      int    POP                 = 87;                     // -
      int    POP2                = 88;                     // -
      int    DUP                 = 89;                     // -
  //    int    DUP_X1              = 90;                     // -
  //    int    DUP_X2              = 91;                     // -
  //    int    DUP2                = 92;                     // -
  //    int    DUP2_X1             = 93;                     // -
  //    int    DUP2_X2             = 94;                     // -
  //    int    SWAP                = 95;                     // -
      int    IADD                = 96;                     // -
      int    LADD                = 97;                     // -
  //    int    FADD                = 98;                     // -
  //    int    DADD                = 99;                     // -
      int    ISUB                = 100;                    // -
  //    int    LSUB                = 101;                    // -
  //    int    FSUB                = 102;                    // -
  //    int    DSUB                = 103;                    // -
  //    int    IMUL                = 104;                    // -
  //    int    LMUL                = 105;                    // -
  //    int    FMUL                = 106;                    // -
  //    int    DMUL                = 107;                    // -
  //    int    IDIV                = 108;                    // -
  //    int    LDIV                = 109;                    // -
  //    int    FDIV                = 110;                    // -
  //    int    DDIV                = 111;                    // -
  //    int    IREM                = 112;                    // -
  //    int    LREM                = 113;                    // -
  //    int    FREM                = 114;                    // -
  //    int    DREM                = 115;                    // -
  //    int    INEG                = 116;                    // -
  //    int    LNEG                = 117;                    // -
  //    int    FNEG                = 118;                    // -
  //    int    DNEG                = 119;                    // -
  //    int    ISHL                = 120;                    // -
  //    int    LSHL                = 121;                    // -
  //    int    ISHR                = 122;                    // -
  //    int    LSHR                = 123;                    // -
  //    int    IUSHR               = 124;                    // -
  //    int    LUSHR               = 125;                    // -
      int    IAND                = 126;                    // -
  //    int    LAND                = 127;                    // -
      int    IOR                 = 128;                    // -
  //    int    LOR                 = 129;                    // -
  //    int    IXOR                = 130;                    // -
  //    int    LXOR                = 131;                    // -
      int    IINC                = 132;                    // visitIincInsn
  //    int    I2L                 = 133;                    // visitInsn
  //    int    I2F                 = 134;                    // -
  //    int    I2D                 = 135;                    // -
  //    int    L2I                 = 136;                    // -
  //    int    L2F                 = 137;                    // -
  //    int    L2D                 = 138;                    // -
  //    int    F2I                 = 139;                    // -
  //    int    F2L                 = 140;                    // -
  //    int    F2D                 = 141;                    // -
  //    int    D2I                 = 142;                    // -
  //    int    D2L                 = 143;                    // -
  //    int    D2F                 = 144;                    // -
      int    I2B                 = 145;                    // -
      int    I2C                 = 146;                    // -
      int    I2S                 = 147;                    // -
      int    LCMP                = 148;                    // -
      int    FCMPL               = 149;                    // -
      int    FCMPG               = 150;                    // -
      int    DCMPL               = 151;                    // -
      int    DCMPG               = 152;                    // -
      int    IFEQ                = 153;                    // visitJumpInsn
      int    IFNE                = 154;                    // -
      int    IFLT                = 155;                    // -
      int    IFGE                = 156;                    // -
      int    IFGT                = 157;                    // -
      int    IFLE                = 158;                    // -
      int    IF_ICMPEQ           = 159;                    // -
      int    IF_ICMPNE           = 160;                    // -
      int    IF_ICMPLT           = 161;                    // -
      int    IF_ICMPGE           = 162;                    // -
      int    IF_ICMPGT           = 163;                    // -
      int    IF_ICMPLE           = 164;                    // -
      int    IF_ACMPEQ           = 165;                    // -
      int    IF_ACMPNE           = 166;                    // -
      int    GOTO                = 167;                    // -
      int    JSR                 = 168;                    // -
      int    RET                 = 169;                    // visitVarInsn
  //    int    TABLESWITCH         = 170;                    // visiTableSwitchInsn
  //    int    LOOKUPSWITCH        = 171;                    // visitLookupSwitch
      int    IRETURN             = 172;                    // visitInsn
  //    int    LRETURN             = 173;                    // -
  //    int    FRETURN             = 174;                    // -
  //    int    DRETURN             = 175;                    // -
      int    ARETURN             = 176;                    // -
      int    RETURN              = 177;                    // -
      int    GETSTATIC           = 178;                    // visitFieldInsn
      int    PUTSTATIC           = 179;                    // -
      int    GETFIELD            = 180;                    // -
      int    PUTFIELD            = 181;                    // -
      int    INVOKEVIRTUAL       = 182;                    // visitMethodInsn
      int    INVOKESPECIAL       = 183;                    // -
      int    INVOKESTATIC        = 184;                    // -
      int    INVOKEINTERFACE     = 185;                    // -
      // int INVOKEDYNAMIC = 186; // -
      int    NEW                 = 187;                    // visitTypeInsn
  //    int    NEWARRAY            = 188;                    // visitIntInsn
  //    int    ANEWARRAY           = 189;                    // visitTypeInsn
  //    int    ARRAYLENGTH         = 190;                    // visitInsn
  //    int    ATHROW              = 191;                    // -
      int    CHECKCAST           = 192;                    // visitTypeInsn
      int    INSTANCEOF          = 193;                    // -
  //    int    MONITORENTER        = 194;                    // visitInsn
  //    int    MONITOREXIT         = 195;                    // -
      // int WIDE = 196; // NOT VISITED
  //    int    MULTIANEWARRAY      = 197;                    // visitMultiANewArrayInsn
      int    IFNULL              = 198;                    // visitJumpInsn
      int    IFNONNULL           = 199;                    // -
      // int GOTO_W = 200; // -
      // int JSR_W = 201; // -
  }
  