content: /*
   * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.  Oracle designates this
   * particular file as subject to the "Classpath" exception as provided
   * by Oracle in the LICENSE file that accompanied this code.
   *
   * This code is distributed in the hope that it will be useful, but WITHOUT
   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   * version 2 for more details (a copy is included in the LICENSE file that
   * accompanied this code).
   *
   * You should have received a copy of the GNU General Public License version
   * 2 along with this work; if not, write to the Free Software Foundation,
   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   *
   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   * or visit www.oracle.com if you need additional information or have any
   * questions.
   */
  
  package openjdk.tools.javac.jvm;
  
  
  /** Bytecode instruction codes, as well as typecodes used as
   *  instruction modifiers.
   *
   *  <p><b>This is NOT part of any supported API.
   *  If you write code that depends on this, you do so at your own risk.
   *  This code and its internal interfaces are subject to change or
   *  deletion without notice.</b>
   */
  public interface ByteCodes {
  
      /** Byte code instruction codes.
       */
      int illegal         = -1,
          nop             = 0,
          aconst_null     = 1,
          iconst_m1       = 2,
          iconst_0        = 3,
          iconst_1        = 4,
          iconst_2        = 5,
          iconst_3        = 6,
          iconst_4        = 7,
          iconst_5        = 8,
          lconst_0        = 9,
          lconst_1        = 10,
          fconst_0        = 11,
          fconst_1        = 12,
          fconst_2        = 13,
          dconst_0        = 14,
          dconst_1        = 15,
          bipush          = 16,
          sipush          = 17,
          ldc1            = 18,
          ldc2            = 19,
          ldc2w           = 20,
          iload           = 21,
          lload           = 22,
          fload           = 23,
          dload           = 24,
          aload           = 25,
          iload_0         = 26,
          iload_1         = 27,
          iload_2         = 28,
          iload_3         = 29,
          lload_0         = 30,
          lload_1         = 31,
          lload_2         = 32,
          lload_3         = 33,
          fload_0         = 34,
          fload_1         = 35,
          fload_2         = 36,
          fload_3         = 37,
          dload_0         = 38,
          dload_1         = 39,
          dload_2         = 40,
          dload_3         = 41,
          aload_0         = 42,
          aload_1         = 43,
          aload_2         = 44,
          aload_3         = 45,
          iaload          = 46,
          laload          = 47,
          faload          = 48,
          daload          = 49,
          aaload          = 50,
          baload          = 51,
          caload          = 52,
          saload          = 53,
          istore          = 54,
          lstore          = 55,
          fstore          = 56,
          dstore          = 57,
          astore          = 58,
          istore_0        = 59,
          istore_1        = 60,
          istore_2        = 61,
          istore_3        = 62,
          lstore_0        = 63,
          lstore_1        = 64,
          lstore_2        = 65,
          lstore_3        = 66,
          fstore_0        = 67,
          fstore_1        = 68,
          fstore_2        = 69,
          fstore_3        = 70,
          dstore_0        = 71,
          dstore_1        = 72,
          dstore_2        = 73,
          dstore_3        = 74,
          astore_0        = 75,
          astore_1        = 76,
          astore_2        = 77,
          astore_3        = 78,
          iastore         = 79,
          lastore         = 80,
          fastore         = 81,
          dastore         = 82,
          aastore         = 83,
          bastore         = 84,
          castore         = 85,
          sastore         = 86,
          pop             = 87,
          pop2            = 88,
          dup             = 89,
          dup_x1          = 90,
          dup_x2          = 91,
          dup2            = 92,
          dup2_x1         = 93,
          dup2_x2         = 94,
          swap            = 95,
          iadd            = 96,
          ladd            = 97,
          fadd            = 98,
          dadd            = 99,
          isub            = 100,
          lsub            = 101,
          fsub            = 102,
          dsub            = 103,
          imul            = 104,
          lmul            = 105,
          fmul            = 106,
          dmul            = 107,
          idiv            = 108,
          ldiv            = 109,
          fdiv            = 110,
          ddiv            = 111,
          imod            = 112,
          lmod            = 113,
          fmod            = 114,
          dmod            = 115,
          ineg            = 116,
          lneg            = 117,
          fneg            = 118,
          dneg            = 119,
          ishl            = 120,
          lshl            = 121,
          ishr            = 122,
          lshr            = 123,
          iushr           = 124,
          lushr           = 125,
          iand            = 126,
          land            = 127,
          ior             = 128,
          lor             = 129,
          ixor            = 130,
          lxor            = 131,
          iinc            = 132,
          i2l             = 133,
          i2f             = 134,
          i2d             = 135,
          l2i             = 136,
          l2f             = 137,
          l2d             = 138,
          f2i             = 139,
          f2l             = 140,
          f2d             = 141,
          d2i             = 142,
          d2l             = 143,
          d2f             = 144,
          int2byte        = 145,
          int2char        = 146,
          int2short       = 147,
          lcmp            = 148,
          fcmpl           = 149,
          fcmpg           = 150,
          dcmpl           = 151,
          dcmpg           = 152,
          ifeq            = 153,
          ifne            = 154,
          iflt            = 155,
          ifge            = 156,
          ifgt            = 157,
          ifle            = 158,
          if_icmpeq       = 159,
          if_icmpne       = 160,
          if_icmplt       = 161,
          if_icmpge       = 162,
          if_icmpgt       = 163,
          if_icmple       = 164,
          if_acmpeq       = 165,
          if_acmpne       = 166,
          goto_           = 167,
          jsr             = 168,
          ret             = 169,
          tableswitch     = 170,
          lookupswitch    = 171,
          ireturn         = 172,
          lreturn         = 173,
          freturn         = 174,
          dreturn         = 175,
          areturn         = 176,
          return_         = 177,
          getstatic       = 178,
          putstatic       = 179,
          getfield        = 180,
          putfield        = 181,
          invokevirtual   = 182,
          invokespecial   = 183,
          invokestatic    = 184,
          invokeinterface = 185,
          invokedynamic   = 186,
          new_            = 187,
          newarray        = 188,
          anewarray       = 189,
          arraylength     = 190,
          athrow          = 191,
          checkcast       = 192,
          instanceof_     = 193,
          monitorenter    = 194,
          monitorexit     = 195,
          wide            = 196,
          multianewarray  = 197,
          if_acmp_null    = 198,
          if_acmp_nonnull = 199,
          goto_w          = 200,
          jsr_w           = 201,
          breakpoint      = 202,
          ByteCodeCount   = 203;
  
      /** Virtual instruction codes; used for constant folding.
       */
      int string_add      = 256,  // string +
          bool_not        = 257,  // boolean !
          bool_and        = 258,  // boolean &&
          bool_or         = 259;  // boolean ||
  
      /** Virtual opcodes; used for shifts with long shiftcount
       */
      int ishll           = 270,  // int shift left with long count
          lshll           = 271,  // long shift left with long count
          ishrl           = 272,  // int shift right with long count
          lshrl           = 273,  // long shift right with long count
          iushrl          = 274,  // int unsigned shift right with long count
          lushrl          = 275;  // long unsigned shift right with long count
  
      /** Virtual opcode for null reference checks
       */
      int nullchk         = 276;  // return operand if non-null,
                                  // otherwise throw NullPointerException.
  
      /** Virtual opcode for disallowed operations.
       */
      int error           = 277;
  
      /** All conditional jumps come in pairs. To streamline the
       *  treatment of jumps, we also introduce a negation of an
       *  unconditional jump. That opcode happens to be jsr.
       */
      int dontgoto        = jsr;
  
      /** Shift and mask constants for shifting prefix instructions.
       *  a pair of instruction codes such as LCMP ; IFEQ is encoded
       *  in Symtab as {@literal (LCMP << preShift) + IFEQ }.
       */
      int preShift        = 9;
      int preMask         = (1 << preShift) - 1;
  
      /** Type codes.
       */
      int INTcode         = 0,
          LONGcode        = 1,
          FLOATcode       = 2,
          DOUBLEcode      = 3,
          OBJECTcode      = 4,
          BYTEcode        = 5,
          CHARcode        = 6,
          SHORTcode       = 7,
          VOIDcode        = 8,
          TypeCodeCount   = 9;
  
      static final String[] typecodeNames = {
          "int",
          "long",
          "float",
          "double",
          "object",
          "byte",
          "char",
          "short",
          "void",
          "oops"
      };
  }
  