Home » openjdk-7 » com.sun.tools » javac » jvm » [javadoc | source]

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

Home » openjdk-7 » com.sun.tools » javac » jvm » [javadoc | source]