langtools/src/share/classes/sun/tools/javap/Constants.java
changeset 2987 2e0ca9f4893d
parent 2986 5370c4ae4f6f
child 2988 094272984b53
equal deleted inserted replaced
2986:5370c4ae4f6f 2987:2e0ca9f4893d
     1 /*
       
     2  * Copyright 2002 Sun Microsystems, Inc.  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.  Sun designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    22  * CA 95054 USA or visit www.sun.com if you need additional information or
       
    23  * have any questions.
       
    24  */
       
    25 
       
    26 
       
    27 
       
    28 package sun.tools.javap;
       
    29 
       
    30 /**
       
    31  * This interface defines constant that are used
       
    32  * throughout the compiler. It inherits from RuntimeConstants,
       
    33  * which is an autogenerated class that contains contstants
       
    34  * defined in the interpreter.
       
    35  */
       
    36 
       
    37 public
       
    38 interface Constants extends RuntimeConstants {
       
    39 
       
    40      /**
       
    41      * End of input
       
    42      */
       
    43     public static final int EOF = -1;
       
    44 
       
    45    /*
       
    46      * Flags
       
    47      */
       
    48     public static final int F_VERBOSE           = 1 << 0;
       
    49     public static final int F_DUMP              = 1 << 1;
       
    50     public static final int F_WARNINGS          = 1 << 2;
       
    51     public static final int F_DEBUG             = 1 << 3;
       
    52     public static final int F_OPTIMIZE          = 1 << 4;
       
    53     public static final int F_DEPENDENCIES      = 1 << 5;
       
    54 
       
    55     /*
       
    56      * Type codes
       
    57      */
       
    58     public static final int TC_BOOLEAN   = 0;
       
    59     public static final int TC_BYTE      = 1;
       
    60     public static final int TC_CHAR      = 2;
       
    61     public static final int TC_SHORT     = 3;
       
    62     public static final int TC_INT       = 4;
       
    63     public static final int TC_LONG      = 5;
       
    64     public static final int TC_FLOAT     = 6;
       
    65     public static final int TC_DOUBLE    = 7;
       
    66     public static final int TC_NULL      = 8;
       
    67     public static final int TC_ARRAY     = 9;
       
    68     public static final int TC_CLASS     = 10;
       
    69     public static final int TC_VOID      = 11;
       
    70     public static final int TC_METHOD    = 12;
       
    71     public static final int TC_ERROR     = 13;
       
    72 
       
    73     /*
       
    74      * Type Masks
       
    75      */
       
    76     public static final int TM_NULL      = 1 << TC_NULL;
       
    77     public static final int TM_VOID      = 1 << TC_VOID;
       
    78     public static final int TM_BOOLEAN   = 1 << TC_BOOLEAN;
       
    79     public static final int TM_BYTE      = 1 << TC_BYTE;
       
    80     public static final int TM_CHAR      = 1 << TC_CHAR;
       
    81     public static final int TM_SHORT     = 1 << TC_SHORT;
       
    82     public static final int TM_INT       = 1 << TC_INT;
       
    83     public static final int TM_LONG      = 1 << TC_LONG;
       
    84     public static final int TM_FLOAT     = 1 << TC_FLOAT;
       
    85     public static final int TM_DOUBLE    = 1 << TC_DOUBLE;
       
    86     public static final int TM_ARRAY     = 1 << TC_ARRAY;
       
    87     public static final int TM_CLASS     = 1 << TC_CLASS;
       
    88     public static final int TM_METHOD    = 1 << TC_METHOD;
       
    89     public static final int TM_ERROR     = 1 << TC_ERROR;
       
    90 
       
    91     public static final int TM_INT32     = TM_BYTE | TM_SHORT | TM_CHAR | TM_INT;
       
    92     public static final int TM_NUM32     = TM_INT32 | TM_FLOAT;
       
    93     public static final int TM_NUM64     = TM_LONG | TM_DOUBLE;
       
    94     public static final int TM_INTEGER   = TM_INT32 | TM_LONG;
       
    95     public static final int TM_REAL      = TM_FLOAT | TM_DOUBLE;
       
    96     public static final int TM_NUMBER    = TM_INTEGER | TM_REAL;
       
    97     public static final int TM_REFERENCE = TM_ARRAY | TM_CLASS | TM_NULL;
       
    98 
       
    99     /*
       
   100      * Class status
       
   101      */
       
   102     public static final int CS_UNDEFINED        = 0;
       
   103     public static final int CS_UNDECIDED        = 1;
       
   104     public static final int CS_BINARY           = 2;
       
   105     public static final int CS_SOURCE           = 3;
       
   106     public static final int CS_PARSED           = 4;
       
   107     public static final int CS_COMPILED         = 5;
       
   108     public static final int CS_NOTFOUND         = 6;
       
   109 
       
   110     /*
       
   111      * Attributes
       
   112      */
       
   113     public static final int ATT_ALL             = -1;
       
   114     public static final int ATT_CODE            = 1;
       
   115 
       
   116     /*
       
   117      * Number of bits used in file offsets
       
   118      */
       
   119     public static final int OFFSETBITS          = 19;
       
   120     public static final int MAXFILESIZE         = (1 << OFFSETBITS) - 1;
       
   121     public static final int MAXLINENUMBER       = (1 << (32 - OFFSETBITS)) - 1;
       
   122 
       
   123     /*
       
   124      * Operators
       
   125      */
       
   126     public final int COMMA              = 0;
       
   127     public final int ASSIGN             = 1;
       
   128 
       
   129     public final int ASGMUL             = 2;
       
   130     public final int ASGDIV             = 3;
       
   131     public final int ASGREM             = 4;
       
   132     public final int ASGADD             = 5;
       
   133     public final int ASGSUB             = 6;
       
   134     public final int ASGLSHIFT          = 7;
       
   135     public final int ASGRSHIFT          = 8;
       
   136     public final int ASGURSHIFT         = 9;
       
   137     public final int ASGBITAND          = 10;
       
   138     public final int ASGBITOR           = 11;
       
   139     public final int ASGBITXOR          = 12;
       
   140 
       
   141     public final int COND               = 13;
       
   142     public final int OR                 = 14;
       
   143     public final int AND                = 15;
       
   144     public final int BITOR              = 16;
       
   145     public final int BITXOR             = 17;
       
   146     public final int BITAND             = 18;
       
   147     public final int NE                 = 19;
       
   148     public final int EQ                 = 20;
       
   149     public final int GE                 = 21;
       
   150     public final int GT                 = 22;
       
   151     public final int LE                 = 23;
       
   152     public final int LT                 = 24;
       
   153     public final int INSTANCEOF         = 25;
       
   154     public final int LSHIFT             = 26;
       
   155     public final int RSHIFT             = 27;
       
   156     public final int URSHIFT            = 28;
       
   157     public final int ADD                = 29;
       
   158     public final int SUB                = 30;
       
   159     public final int DIV                = 31;
       
   160     public final int REM                = 32;
       
   161     public final int MUL                = 33;
       
   162     public final int CAST               = 34;           // (x)y
       
   163     public final int POS                = 35;           // +x
       
   164     public final int NEG                = 36;           // -x
       
   165     public final int NOT                = 37;
       
   166     public final int BITNOT             = 38;
       
   167     public final int PREINC             = 39;           // ++x
       
   168     public final int PREDEC             = 40;           // --x
       
   169     public final int NEWARRAY           = 41;
       
   170     public final int NEWINSTANCE        = 42;
       
   171     public final int NEWFROMNAME        = 43;
       
   172     public final int POSTINC            = 44;           // x++
       
   173     public final int POSTDEC            = 45;           // x--
       
   174     public final int FIELD              = 46;
       
   175     public final int METHOD             = 47;           // x(y)
       
   176     public final int ARRAYACCESS        = 48;           // x[y]
       
   177     public final int NEW                = 49;
       
   178     public final int INC                = 50;
       
   179     public final int DEC                = 51;
       
   180 
       
   181     public final int CONVERT            = 55;           // implicit conversion
       
   182     public final int EXPR               = 56;           // (x)
       
   183     public final int ARRAY              = 57;           // {x, y, ...}
       
   184     public final int GOTO               = 58;
       
   185 
       
   186     /*
       
   187      * Value tokens
       
   188      */
       
   189     public final int IDENT              = 60;
       
   190     public final int BOOLEANVAL         = 61;
       
   191     public final int BYTEVAL            = 62;
       
   192     public final int CHARVAL            = 63;
       
   193     public final int SHORTVAL           = 64;
       
   194     public final int INTVAL                     = 65;
       
   195     public final int LONGVAL            = 66;
       
   196     public final int FLOATVAL           = 67;
       
   197     public final int DOUBLEVAL          = 68;
       
   198     public final int STRINGVAL          = 69;
       
   199 
       
   200     /*
       
   201      * Type keywords
       
   202      */
       
   203     public final int BYTE               = 70;
       
   204     public final int CHAR               = 71;
       
   205     public final int SHORT              = 72;
       
   206     public final int INT                = 73;
       
   207     public final int LONG               = 74;
       
   208     public final int FLOAT              = 75;
       
   209     public final int DOUBLE             = 76;
       
   210     public final int VOID               = 77;
       
   211     public final int BOOLEAN            = 78;
       
   212 
       
   213     /*
       
   214      * Expression keywords
       
   215      */
       
   216     public final int TRUE               = 80;
       
   217     public final int FALSE              = 81;
       
   218     public final int THIS               = 82;
       
   219     public final int SUPER              = 83;
       
   220     public final int NULL               = 84;
       
   221 
       
   222     /*
       
   223      * Statement keywords
       
   224      */
       
   225     public final int IF                 = 90;
       
   226     public final int ELSE               = 91;
       
   227     public final int FOR                = 92;
       
   228     public final int WHILE              = 93;
       
   229     public final int DO                 = 94;
       
   230     public final int SWITCH             = 95;
       
   231     public final int CASE               = 96;
       
   232     public final int DEFAULT            = 97;
       
   233     public final int BREAK              = 98;
       
   234     public final int CONTINUE           = 99;
       
   235     public final int RETURN             = 100;
       
   236     public final int TRY                = 101;
       
   237     public final int CATCH              = 102;
       
   238     public final int FINALLY            = 103;
       
   239     public final int THROW              = 104;
       
   240     public final int STAT               = 105;
       
   241     public final int EXPRESSION         = 106;
       
   242     public final int DECLARATION        = 107;
       
   243     public final int VARDECLARATION     = 108;
       
   244 
       
   245     /*
       
   246      * Declaration keywords
       
   247      */
       
   248     public final int IMPORT             = 110;
       
   249     public final int CLASS              = 111;
       
   250     public final int EXTENDS            = 112;
       
   251     public final int IMPLEMENTS         = 113;
       
   252     public final int INTERFACE          = 114;
       
   253     public final int PACKAGE            = 115;
       
   254 
       
   255     /*
       
   256      * Modifier keywords
       
   257      */
       
   258     public final int PRIVATE    = 120;
       
   259     public final int PUBLIC             = 121;
       
   260     public final int PROTECTED  = 122;
       
   261     public final int CONST              = 123;
       
   262     public final int STATIC             = 124;
       
   263     public final int TRANSIENT          = 125;
       
   264     public final int SYNCHRONIZED       = 126;
       
   265     public final int NATIVE             = 127;
       
   266     public final int FINAL              = 128;
       
   267     public final int VOLATILE   = 129;
       
   268     public final int ABSTRACT   = 130;
       
   269     public final int STRICT             = 165;
       
   270 
       
   271     /*
       
   272      * Punctuation
       
   273      */
       
   274     public final int SEMICOLON  = 135;
       
   275     public final int COLON              = 136;
       
   276     public final int QUESTIONMARK       = 137;
       
   277     public final int LBRACE             = 138;
       
   278     public final int RBRACE             = 139;
       
   279     public final int LPAREN             = 140;
       
   280     public final int RPAREN             = 141;
       
   281     public final int LSQBRACKET = 142;
       
   282     public final int RSQBRACKET = 143;
       
   283     public final int THROWS     = 144;
       
   284 
       
   285     /*
       
   286      * Special tokens
       
   287      */
       
   288     public final int ERROR              = 145;          // an error
       
   289     public final int COMMENT    = 146;          // not used anymore.
       
   290     public final int TYPE               = 147;
       
   291     public final int LENGTH             = 148;
       
   292     public final int INLINERETURN       = 149;
       
   293     public final int INLINEMETHOD       = 150;
       
   294     public final int INLINENEWINSTANCE  = 151;
       
   295 
       
   296     /*
       
   297      * Added for jasm
       
   298      */
       
   299         public final int METHODREF      = 152;
       
   300         public final int FIELDREF       = 153;
       
   301     public final int STACK              = 154;
       
   302     public final int LOCAL              = 155;
       
   303     public final int CPINDEX    = 156;
       
   304     public final int CPNAME             = 157;
       
   305     public final int SIGN               = 158;
       
   306     public final int BITS               = 159;
       
   307     public final int INF                = 160;
       
   308     public final int NAN                = 161;
       
   309     public final int INNERCLASS = 162;
       
   310     public final int OF         = 163;
       
   311     public final int SYNTHETIC          = 164;
       
   312 // last used=165;
       
   313 
       
   314    /*
       
   315      * Operator precedence
       
   316      */
       
   317     public static final int opPrecedence[] = {
       
   318         10,     11,     11,     11,     11,     11,     11,     11,     11,     11,
       
   319         11,     11,     11,     12,     13,     14,     15,     16,     17,     18,
       
   320         18,     19,     19,     19,     19,     19,     20,     20,     20,     21,
       
   321         21,     22,     22,     22,     23,     24,     24,     24,     24,     24,
       
   322         24,     25,     25,     26,     26,     26,     26,     26,     26
       
   323     };
       
   324 
       
   325     /*
       
   326      * Operator names
       
   327      */
       
   328     public static final String opNames[] = {
       
   329         ",",            "=",            "*=",           "/=",           "%=",
       
   330         "+=",           "-=",           "<<=",          ">>=",          "<<<=",
       
   331         "&=",           "|=",           "^=",           "?:",           "||",
       
   332         "&&",           "|",            "^",            "&",            "!=",
       
   333         "==",           ">=",           ">",            "<=",           "<",
       
   334         "instanceof",   "<<",           ">>",           "<<<",          "+",
       
   335         "-",            "/",            "%",            "*",            "cast",
       
   336         "+",            "-",            "!",            "~",            "++",
       
   337         "--",           "new",          "new",          "new",          "++",
       
   338         "--",           "field",        "method",       "[]",           "new",
       
   339         "++",           "--",           null,           null,           null,
       
   340 
       
   341         "convert",      "expr",         "array",        "goto",         null,
       
   342 
       
   343         "Identifier",   "Boolean",      "Byte",         "Char",         "Short",
       
   344         "Integer",              "Long",         "Float",        "Double",       "String",
       
   345 
       
   346         "byte",         "char",         "short",        "int",          "long",
       
   347         "float",        "double",       "void",         "boolean",      null,
       
   348 
       
   349         "true",         "false",        "this",         "super",        "null",
       
   350         null,           null,           null,           null,           null,
       
   351 
       
   352         "if",           "else",         "for",          "while",        "do",
       
   353         "switch",       "case",         "default",      "break",        "continue",
       
   354         "return",       "try",          "catch",        "finally",      "throw",
       
   355         "stat",         "expression",   "declaration",  "declaration",  null,
       
   356 
       
   357         "import",       "class",        "extends",      "implements",   "interface",
       
   358         "package",      null,           null,           null,           null,
       
   359 
       
   360         "private",      "public",       "protected",    "const",        "static",
       
   361         "transient",    "synchronized", "native",       "final",        "volatile",
       
   362         "abstract",     null,           null,           null,           null,
       
   363 
       
   364         ";",            ":",            "?",            "{",            "}",
       
   365         "(",            ")",            "[",            "]",            "throws",
       
   366         "error",        "comment",      "type",         "length",       "inline-return",
       
   367         "inline-method", "inline-new",
       
   368         "method", "field", "stack", "locals", "CPINDEX", "CPName", "SIGN",
       
   369         "bits", "INF", "NaN", "InnerClass", "of", "synthetic"
       
   370     };
       
   371 
       
   372 }