View Javadoc

    1   /*
    2    * Copyright  2000-2004 The Apache Software Foundation
    3    *
    4    *  Licensed under the Apache License, Version 2.0 (the "License");
    5    *  you may not use this file except in compliance with the License.
    6    *  You may obtain a copy of the License at
    7    *
    8    *      http://www.apache.org/licenses/LICENSE-2.0
    9    *
    10   *  Unless required by applicable law or agreed to in writing, software
    11   *  distributed under the License is distributed on an "AS IS" BASIS,
    12   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   *  See the License for the specific language governing permissions and
    14   *  limitations under the License.
    15   *
    16   */
    17  package org.apache.bcel;
    18
    19  /***
    20   * Constants for the project, mostly defined in the JVM specification.
    21   *
    22   * @version $Id: Constants.java 410087 2006-05-29 12:12:19Z tcurdt $
    23   * @author  <A HREF="mailto:m.dahm@gmx.de">M. Dahm</A>
    24   */
    25  public interface Constants {
    26    /*** Major and minor version of the code.
    27     */
    28    public final static short MAJOR_1_1 = 45;
    29    public final static short MINOR_1_1 = 3;
    30    public final static short MAJOR_1_2 = 46;
    31    public final static short MINOR_1_2 = 0;
    32    public final static short MAJOR_1_3 = 47;
    33    public final static short MINOR_1_3 = 0;
    34    public final static short MAJOR_1_4 = 48;
    35    public final static short MINOR_1_4 = 0;
    36    public final static short MAJOR_1_5 = 49;
    37    public final static short MINOR_1_5 = 0;
    38    public final static short MAJOR     = MAJOR_1_1; // Defaults
    39    public final static short MINOR     = MINOR_1_1;
    40
    41    /*** Maximum value for an unsigned short.
    42     */
    43    public final static int MAX_SHORT = 65535; // 2^16 - 1
    44
    45    /*** Maximum value for an unsigned byte.
    46     */
    47    public final static int MAX_BYTE  = 255; // 2^8 - 1
    48
    49    /*** Access flags for classes, fields and methods.
    50     */
    51    public final static short ACC_PUBLIC       = 0x0001;
    52    public final static short ACC_PRIVATE      = 0x0002;
    53    public final static short ACC_PROTECTED    = 0x0004;
    54    public final static short ACC_STATIC       = 0x0008;
    55
    56    public final static short ACC_FINAL        = 0x0010;
    57    public final static short ACC_SYNCHRONIZED = 0x0020;
    58    public final static short ACC_VOLATILE     = 0x0040;
    59    public final static short ACC_BRIDGE       = 0x0040;
    60    public final static short ACC_TRANSIENT    = 0x0080;
    61    public final static short ACC_VARARGS      = 0x0080;
    62
    63    public final static short ACC_NATIVE       = 0x0100;
    64    public final static short ACC_INTERFACE    = 0x0200;
    65    public final static short ACC_ABSTRACT     = 0x0400;
    66    public final static short ACC_STRICT       = 0x0800;
    67
    68    public final static short ACC_SYNTHETIC    = 0x1000;
    69    public final static short ACC_ANNOTATION   = 0x2000;
    70    public final static short ACC_ENUM         = 0x4000;
    71
    72    // Applies to classes compiled by new compilers only
    73    public final static short ACC_SUPER        = 0x0020;
    74
    75    public final static short MAX_ACC_FLAG     = ACC_ENUM;
    76
    77    public final static String[] ACCESS_NAMES = {
    78      "public", "private", "protected", "static", "final", "synchronized",
    79      "volatile", "transient", "native", "interface", "abstract", "strictfp",
    80      "synthetic", "annotation", "enum"
    81    };
    82
    83    /*** Tags in constant pool to denote type of constant.
    84     */
    85    public final static byte CONSTANT_Utf8               = 1;
    86    public final static byte CONSTANT_Integer            = 3;
    87    public final static byte CONSTANT_Float              = 4;
    88    public final static byte CONSTANT_Long               = 5;
    89    public final static byte CONSTANT_Double             = 6;
    90    public final static byte CONSTANT_Class              = 7;
    91    public final static byte CONSTANT_Fieldref           = 9;
    92    public final static byte CONSTANT_String             = 8;
    93    public final static byte CONSTANT_Methodref          = 10;
    94    public final static byte CONSTANT_InterfaceMethodref = 11;
    95    public final static byte CONSTANT_NameAndType        = 12;
    96
    97    public final static String[] CONSTANT_NAMES = {
    98      "", "CONSTANT_Utf8", "", "CONSTANT_Integer",
    99      "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double",
    100     "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref",
    101     "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref",
    102     "CONSTANT_NameAndType" };
    103
    104   /*** The name of the static initializer, also called &quot;class
    105    *  initialization method&quot; or &quot;interface initialization
    106    *   method&quot;. This is &quot;&lt;clinit&gt;&quot;.
    107    */
    108   public final static String STATIC_INITIALIZER_NAME = "<clinit>";
    109
    110   /*** The name of every constructor method in a class, also called
    111    * &quot;instance initialization method&quot;. This is &quot;&lt;init&gt;&quot;.
    112    */
    113   public final static String CONSTRUCTOR_NAME = "<init>";
    114
    115   /*** The names of the interfaces implemented by arrays */
    116   public final static String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"};
    117
    118   /***
    119    * Limitations of the Java Virtual Machine.
    120    * See The Java Virtual Machine Specification, Second Edition, page 152, chapter 4.10.
    121    */
    122   public static final int MAX_CP_ENTRIES     = 65535;
    123   public static final int MAX_CODE_SIZE      = 65536; //bytes
    124
    125   /*** Java VM opcodes.
    126    */
    127   public static final short NOP              = 0;
    128   public static final short ACONST_NULL      = 1;
    129   public static final short ICONST_M1        = 2;
    130   public static final short ICONST_0         = 3;
    131   public static final short ICONST_1         = 4;
    132   public static final short ICONST_2         = 5;
    133   public static final short ICONST_3         = 6;
    134   public static final short ICONST_4         = 7;
    135   public static final short ICONST_5         = 8;
    136   public static final short LCONST_0         = 9;
    137   public static final short LCONST_1         = 10;
    138   public static final short FCONST_0         = 11;
    139   public static final short FCONST_1         = 12;
    140   public static final short FCONST_2         = 13;
    141   public static final short DCONST_0         = 14;
    142   public static final short DCONST_1         = 15;
    143   public static final short BIPUSH           = 16;
    144   public static final short SIPUSH           = 17;
    145   public static final short LDC              = 18;
    146   public static final short LDC_W            = 19;
    147   public static final short LDC2_W           = 20;
    148   public static final short ILOAD            = 21;
    149   public static final short LLOAD            = 22;
    150   public static final short FLOAD            = 23;
    151   public static final short DLOAD            = 24;
    152   public static final short ALOAD            = 25;
    153   public static final short ILOAD_0          = 26;
    154   public static final short ILOAD_1          = 27;
    155   public static final short ILOAD_2          = 28;
    156   public static final short ILOAD_3          = 29;
    157   public static final short LLOAD_0          = 30;
    158   public static final short LLOAD_1          = 31;
    159   public static final short LLOAD_2          = 32;
    160   public static final short LLOAD_3          = 33;
    161   public static final short FLOAD_0          = 34;
    162   public static final short FLOAD_1          = 35;
    163   public static final short FLOAD_2          = 36;
    164   public static final short FLOAD_3          = 37;
    165   public static final short DLOAD_0          = 38;
    166   public static final short DLOAD_1          = 39;
    167   public static final short DLOAD_2          = 40;
    168   public static final short DLOAD_3          = 41;
    169   public static final short ALOAD_0          = 42;
    170   public static final short ALOAD_1          = 43;
    171   public static final short ALOAD_2          = 44;
    172   public static final short ALOAD_3          = 45;
    173   public static final short IALOAD           = 46;
    174   public static final short LALOAD           = 47;
    175   public static final short FALOAD           = 48;
    176   public static final short DALOAD           = 49;
    177   public static final short AALOAD           = 50;
    178   public static final short BALOAD           = 51;
    179   public static final short CALOAD           = 52;
    180   public static final short SALOAD           = 53;
    181   public static final short ISTORE           = 54;
    182   public static final short LSTORE           = 55;
    183   public static final short FSTORE           = 56;
    184   public static final short DSTORE           = 57;
    185   public static final short ASTORE           = 58;
    186   public static final short ISTORE_0         = 59;
    187   public static final short ISTORE_1         = 60;
    188   public static final short ISTORE_2         = 61;
    189   public static final short ISTORE_3         = 62;
    190   public static final short LSTORE_0         = 63;
    191   public static final short LSTORE_1         = 64;
    192   public static final short LSTORE_2         = 65;
    193   public static final short LSTORE_3         = 66;
    194   public static final short FSTORE_0         = 67;
    195   public static final short FSTORE_1         = 68;
    196   public static final short FSTORE_2         = 69;
    197   public static final short FSTORE_3         = 70;
    198   public static final short DSTORE_0         = 71;
    199   public static final short DSTORE_1         = 72;
    200   public static final short DSTORE_2         = 73;
    201   public static final short DSTORE_3         = 74;
    202   public static final short ASTORE_0         = 75;
    203   public static final short ASTORE_1         = 76;
    204   public static final short ASTORE_2         = 77;
    205   public static final short ASTORE_3         = 78;
    206   public static final short IASTORE          = 79;
    207   public static final short LASTORE          = 80;
    208   public static final short FASTORE          = 81;
    209   public static final short DASTORE          = 82;
    210   public static final short AASTORE          = 83;
    211   public static final short BASTORE          = 84;
    212   public static final short CASTORE          = 85;
    213   public static final short SASTORE          = 86;
    214   public static final short POP              = 87;
    215   public static final short POP2             = 88;
    216   public static final short DUP              = 89;
    217   public static final short DUP_X1           = 90;
    218   public static final short DUP_X2           = 91;
    219   public static final short DUP2             = 92;
    220   public static final short DUP2_X1          = 93;
    221   public static final short DUP2_X2          = 94;
    222   public static final short SWAP             = 95;
    223   public static final short IADD             = 96;
    224   public static final short LADD             = 97;
    225   public static final short FADD             = 98;
    226   public static final short DADD             = 99;
    227   public static final short ISUB             = 100;
    228   public static final short LSUB             = 101;
    229   public static final short FSUB             = 102;
    230   public static final short DSUB             = 103;
    231   public static final short IMUL             = 104;
    232   public static final short LMUL             = 105;
    233   public static final short FMUL             = 106;
    234   public static final short DMUL             = 107;
    235   public static final short IDIV             = 108;
    236   public static final short LDIV             = 109;
    237   public static final short FDIV             = 110;
    238   public static final short DDIV             = 111;
    239   public static final short IREM             = 112;
    240   public static final short LREM             = 113;
    241   public static final short FREM             = 114;
    242   public static final short DREM             = 115;
    243   public static final short INEG             = 116;
    244   public static final short LNEG             = 117;
    245   public static final short FNEG             = 118;
    246   public static final short DNEG             = 119;
    247   public static final short ISHL             = 120;
    248   public static final short LSHL             = 121;
    249   public static final short ISHR             = 122;
    250   public static final short LSHR             = 123;
    251   public static final short IUSHR            = 124;
    252   public static final short LUSHR            = 125;
    253   public static final short IAND             = 126;
    254   public static final short LAND             = 127;
    255   public static final short IOR              = 128;
    256   public static final short LOR              = 129;
    257   public static final short IXOR             = 130;
    258   public static final short LXOR             = 131;
    259   public static final short IINC             = 132;
    260   public static final short I2L              = 133;
    261   public static final short I2F              = 134;
    262   public static final short I2D              = 135;
    263   public static final short L2I              = 136;
    264   public static final short L2F              = 137;
    265   public static final short L2D              = 138;
    266   public static final short F2I              = 139;
    267   public static final short F2L              = 140;
    268   public static final short F2D              = 141;
    269   public static final short D2I              = 142;
    270   public static final short D2L              = 143;
    271   public static final short D2F              = 144;
    272   public static final short I2B              = 145;
    273   public static final short INT2BYTE         = 145; // Old notion
    274   public static final short I2C              = 146;
    275   public static final short INT2CHAR         = 146; // Old notion
    276   public static final short I2S              = 147;
    277   public static final short INT2SHORT        = 147; // Old notion
    278   public static final short LCMP             = 148;
    279   public static final short FCMPL            = 149;
    280   public static final short FCMPG            = 150;
    281   public static final short DCMPL            = 151;
    282   public static final short DCMPG            = 152;
    283   public static final short IFEQ             = 153;
    284   public static final short IFNE             = 154;
    285   public static final short IFLT             = 155;
    286   public static final short IFGE             = 156;
    287   public static final short IFGT             = 157;
    288   public static final short IFLE             = 158;
    289   public static final short IF_ICMPEQ        = 159;
    290   public static final short IF_ICMPNE        = 160;
    291   public static final short IF_ICMPLT        = 161;
    292   public static final short IF_ICMPGE        = 162;
    293   public static final short IF_ICMPGT        = 163;
    294   public static final short IF_ICMPLE        = 164;
    295   public static final short IF_ACMPEQ        = 165;
    296   public static final short IF_ACMPNE        = 166;
    297   public static final short GOTO             = 167;
    298   public static final short JSR              = 168;
    299   public static final short RET              = 169;
    300   public static final short TABLESWITCH      = 170;
    301   public static final short LOOKUPSWITCH     = 171;
    302   public static final short IRETURN          = 172;
    303   public static final short LRETURN          = 173;
    304   public static final short FRETURN          = 174;
    305   public static final short DRETURN          = 175;
    306   public static final short ARETURN          = 176;
    307   public static final short RETURN           = 177;
    308   public static final short GETSTATIC        = 178;
    309   public static final short PUTSTATIC        = 179;
    310   public static final short GETFIELD         = 180;
    311   public static final short PUTFIELD         = 181;
    312   public static final short INVOKEVIRTUAL    = 182;
    313   public static final short INVOKESPECIAL    = 183;
    314   public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0
    315   public static final short INVOKESTATIC     = 184;
    316   public static final short INVOKEINTERFACE  = 185;
    317   public static final short NEW              = 187;
    318   public static final short NEWARRAY         = 188;
    319   public static final short ANEWARRAY        = 189;
    320   public static final short ARRAYLENGTH      = 190;
    321   public static final short ATHROW           = 191;
    322   public static final short CHECKCAST        = 192;
    323   public static final short INSTANCEOF       = 193;
    324   public static final short MONITORENTER     = 194;
    325   public static final short MONITOREXIT      = 195;
    326   public static final short WIDE             = 196;
    327   public static final short MULTIANEWARRAY   = 197;
    328   public static final short IFNULL           = 198;
    329   public static final short IFNONNULL        = 199;
    330   public static final short GOTO_W           = 200;
    331   public static final short JSR_W            = 201;
    332
    333   /***
    334    * Non-legal opcodes, may be used by JVM internally.
    335    */
    336   public static final short BREAKPOINT                = 202;
    337   public static final short LDC_QUICK                 = 203;
    338   public static final short LDC_W_QUICK               = 204;
    339   public static final short LDC2_W_QUICK              = 205;
    340   public static final short GETFIELD_QUICK            = 206;
    341   public static final short PUTFIELD_QUICK            = 207;
    342   public static final short GETFIELD2_QUICK           = 208;
    343   public static final short PUTFIELD2_QUICK           = 209;
    344   public static final short GETSTATIC_QUICK           = 210;
    345   public static final short PUTSTATIC_QUICK           = 211;
    346   public static final short GETSTATIC2_QUICK          = 212;
    347   public static final short PUTSTATIC2_QUICK          = 213;
    348   public static final short INVOKEVIRTUAL_QUICK       = 214;
    349   public static final short INVOKENONVIRTUAL_QUICK    = 215;
    350   public static final short INVOKESUPER_QUICK         = 216;
    351   public static final short INVOKESTATIC_QUICK        = 217;
    352   public static final short INVOKEINTERFACE_QUICK     = 218;
    353   public static final short INVOKEVIRTUALOBJECT_QUICK = 219;
    354   public static final short NEW_QUICK                 = 221;
    355   public static final short ANEWARRAY_QUICK           = 222;
    356   public static final short MULTIANEWARRAY_QUICK      = 223;
    357   public static final short CHECKCAST_QUICK           = 224;
    358   public static final short INSTANCEOF_QUICK          = 225;
    359   public static final short INVOKEVIRTUAL_QUICK_W     = 226;
    360   public static final short GETFIELD_QUICK_W          = 227;
    361   public static final short PUTFIELD_QUICK_W          = 228;
    362   public static final short IMPDEP1                   = 254;
    363   public static final short IMPDEP2                   = 255;
    364
    365   /***
    366    * For internal purposes only.
    367    */
    368   public static final short PUSH             = 4711;
    369   public static final short SWITCH           = 4712;
    370
    371   /***
    372    * Illegal codes
    373    */
    374   public static final short  UNDEFINED      = -1;
    375   public static final short  UNPREDICTABLE  = -2;
    376   public static final short  RESERVED       = -3;
    377   public static final String ILLEGAL_OPCODE = "<illegal opcode>";
    378   public static final String ILLEGAL_TYPE   = "<illegal type>";
    379
    380   public static final byte T_BOOLEAN = 4;
    381   public static final byte T_CHAR    = 5;
    382   public static final byte T_FLOAT   = 6;
    383   public static final byte T_DOUBLE  = 7;
    384   public static final byte T_BYTE    = 8;
    385   public static final byte T_SHORT   = 9;
    386   public static final byte T_INT     = 10;
    387   public static final byte T_LONG    = 11;
    388
    389   public static final byte T_VOID      = 12; // Non-standard
    390   public static final byte T_ARRAY     = 13;
    391   public static final byte T_OBJECT    = 14;
    392   public static final byte T_REFERENCE = 14; // Deprecated
    393   public static final byte T_UNKNOWN   = 15;
    394   public static final byte T_ADDRESS   = 16;
    395
    396   /*** The primitive type names corresponding to the T_XX constants,
    397    * e.g., TYPE_NAMES[T_INT] = "int"
    398    */
    399   public static final String[] TYPE_NAMES = {
    400     ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE, ILLEGAL_TYPE,
    401     "boolean", "char", "float", "double", "byte", "short", "int", "long",
    402     "void", "array", "object", "unknown" // Non-standard
    403   };
    404
    405   /*** The primitive class names corresponding to the T_XX constants,
    406    * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
    407    */
    408   public static final String[] CLASS_TYPE_NAMES = {
    409     ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE, ILLEGAL_TYPE,
    410     "java.lang.Boolean", "java.lang.Character", "java.lang.Float",
    411     "java.lang.Double", "java.lang.Byte", "java.lang.Short",
    412     "java.lang.Integer", "java.lang.Long", "java.lang.Void",
    413     ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE
    414   };
    415
    416   /*** The signature characters corresponding to primitive types,
    417    * e.g., SHORT_TYPE_NAMES[T_INT] = "I"
    418    */
    419   public static final String[] SHORT_TYPE_NAMES = {
    420     ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE, ILLEGAL_TYPE,
    421     "Z", "C", "F", "D", "B", "S", "I", "J",
    422     "V", ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE
    423   };
    424
    425   /***
    426    * Number of byte code operands, i.e., number of bytes after the tag byte
    427    * itself.
    428    */
    429   public static final short[] NO_OF_OPERANDS = {
    430     0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/,
    431     0/*iconst_1*/, 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/,
    432     0/*iconst_5*/, 0/*lconst_0*/, 0/*lconst_1*/, 0/*fconst_0*/,
    433     0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, 0/*dconst_1*/,
    434     1/*bipush*/, 2/*sipush*/, 1/*ldc*/, 2/*ldc_w*/, 2/*ldc2_w*/,
    435     1/*iload*/, 1/*lload*/, 1/*fload*/, 1/*dload*/, 1/*aload*/,
    436     0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, 0/*iload_3*/,
    437     0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/,
    438     0/*fload_0*/, 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/,
    439     0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, 0/*dload_3*/,
    440     0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/,
    441     0/*iaload*/, 0/*laload*/, 0/*faload*/, 0/*daload*/,
    442     0/*aaload*/, 0/*baload*/, 0/*caload*/, 0/*saload*/,
    443     1/*istore*/, 1/*lstore*/, 1/*fstore*/, 1/*dstore*/,
    444     1/*astore*/, 0/*istore_0*/, 0/*istore_1*/, 0/*istore_2*/,
    445     0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, 0/*lstore_2*/,
    446     0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/,
    447     0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/,
    448     0/*dstore_3*/, 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/,
    449     0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, 0/*fastore*/,
    450     0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/,
    451     0/*sastore*/, 0/*pop*/, 0/*pop2*/, 0/*dup*/, 0/*dup_x1*/,
    452     0/*dup_x2*/, 0/*dup2*/, 0/*dup2_x1*/, 0/*dup2_x2*/, 0/*swap*/,
    453     0/*iadd*/, 0/*ladd*/, 0/*fadd*/, 0/*dadd*/, 0/*isub*/,
    454     0/*lsub*/, 0/*fsub*/, 0/*dsub*/, 0/*imul*/, 0/*lmul*/,
    455     0/*fmul*/, 0/*dmul*/, 0/*idiv*/, 0/*ldiv*/, 0/*fdiv*/,
    456     0/*ddiv*/, 0/*irem*/, 0/*lrem*/, 0/*frem*/, 0/*drem*/,
    457     0/*ineg*/, 0/*lneg*/, 0/*fneg*/, 0/*dneg*/, 0/*ishl*/,
    458     0/*lshl*/, 0/*ishr*/, 0/*lshr*/, 0/*iushr*/, 0/*lushr*/,
    459     0/*iand*/, 0/*land*/, 0/*ior*/, 0/*lor*/, 0/*ixor*/, 0/*lxor*/,
    460     2/*iinc*/, 0/*i2l*/, 0/*i2f*/, 0/*i2d*/, 0/*l2i*/, 0/*l2f*/,
    461     0/*l2d*/, 0/*f2i*/, 0/*f2l*/, 0/*f2d*/, 0/*d2i*/, 0/*d2l*/,
    462     0/*d2f*/, 0/*i2b*/, 0/*i2c*/, 0/*i2s*/, 0/*lcmp*/, 0/*fcmpl*/,
    463     0/*fcmpg*/, 0/*dcmpl*/, 0/*dcmpg*/, 2/*ifeq*/, 2/*ifne*/,
    464     2/*iflt*/, 2/*ifge*/, 2/*ifgt*/, 2/*ifle*/, 2/*if_icmpeq*/,
    465     2/*if_icmpne*/, 2/*if_icmplt*/, 2/*if_icmpge*/, 2/*if_icmpgt*/,
    466     2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, 2/*goto*/,
    467     2/*jsr*/, 1/*ret*/, UNPREDICTABLE/*tableswitch*/, UNPREDICTABLE/*lookupswitch*/,
    468     0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/,
    469     0/*dreturn*/, 0/*areturn*/, 0/*return*/,
    470     2/*getstatic*/, 2/*putstatic*/, 2/*getfield*/,
    471     2/*putfield*/, 2/*invokevirtual*/, 2/*invokespecial*/, 2/*invokestatic*/,
    472     4/*invokeinterface*/, UNDEFINED, 2/*new*/,
    473     1/*newarray*/, 2/*anewarray*/,
    474     0/*arraylength*/, 0/*athrow*/, 2/*checkcast*/,
    475     2/*instanceof*/, 0/*monitorenter*/,
    476     0/*monitorexit*/, UNPREDICTABLE/*wide*/, 3/*multianewarray*/,
    477     2/*ifnull*/, 2/*ifnonnull*/, 4/*goto_w*/,
    478     4/*jsr_w*/, 0/*breakpoint*/, UNDEFINED,
    479     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    480     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    481     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    482     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    483     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    484     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    485     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    486     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    487     UNDEFINED, UNDEFINED, RESERVED/*impdep1*/, RESERVED/*impdep2*/
    488   };
    489
    490   /***
    491    * How the byte code operands are to be interpreted.
    492    */
    493   public static final short[][] TYPE_OF_OPERANDS = {
    494     {}/*nop*/, {}/*aconst_null*/, {}/*iconst_m1*/, {}/*iconst_0*/,
    495     {}/*iconst_1*/, {}/*iconst_2*/, {}/*iconst_3*/, {}/*iconst_4*/,
    496     {}/*iconst_5*/, {}/*lconst_0*/, {}/*lconst_1*/, {}/*fconst_0*/,
    497     {}/*fconst_1*/, {}/*fconst_2*/, {}/*dconst_0*/, {}/*dconst_1*/,
    498     {T_BYTE}/*bipush*/, {T_SHORT}/*sipush*/, {T_BYTE}/*ldc*/,
    499     {T_SHORT}/*ldc_w*/, {T_SHORT}/*ldc2_w*/,
    500     {T_BYTE}/*iload*/, {T_BYTE}/*lload*/, {T_BYTE}/*fload*/,
    501     {T_BYTE}/*dload*/, {T_BYTE}/*aload*/, {}/*iload_0*/,
    502     {}/*iload_1*/, {}/*iload_2*/, {}/*iload_3*/, {}/*lload_0*/,
    503     {}/*lload_1*/, {}/*lload_2*/, {}/*lload_3*/, {}/*fload_0*/,
    504     {}/*fload_1*/, {}/*fload_2*/, {}/*fload_3*/, {}/*dload_0*/,
    505     {}/*dload_1*/, {}/*dload_2*/, {}/*dload_3*/, {}/*aload_0*/,
    506     {}/*aload_1*/, {}/*aload_2*/, {}/*aload_3*/, {}/*iaload*/,
    507     {}/*laload*/, {}/*faload*/, {}/*daload*/, {}/*aaload*/,
    508     {}/*baload*/, {}/*caload*/, {}/*saload*/, {T_BYTE}/*istore*/,
    509     {T_BYTE}/*lstore*/, {T_BYTE}/*fstore*/, {T_BYTE}/*dstore*/,
    510     {T_BYTE}/*astore*/, {}/*istore_0*/, {}/*istore_1*/,
    511     {}/*istore_2*/, {}/*istore_3*/, {}/*lstore_0*/, {}/*lstore_1*/,
    512     {}/*lstore_2*/, {}/*lstore_3*/, {}/*fstore_0*/, {}/*fstore_1*/,
    513     {}/*fstore_2*/, {}/*fstore_3*/, {}/*dstore_0*/, {}/*dstore_1*/,
    514     {}/*dstore_2*/, {}/*dstore_3*/, {}/*astore_0*/, {}/*astore_1*/,
    515     {}/*astore_2*/, {}/*astore_3*/, {}/*iastore*/, {}/*lastore*/,
    516     {}/*fastore*/, {}/*dastore*/, {}/*aastore*/, {}/*bastore*/,
    517     {}/*castore*/, {}/*sastore*/, {}/*pop*/, {}/*pop2*/, {}/*dup*/,
    518     {}/*dup_x1*/, {}/*dup_x2*/, {}/*dup2*/, {}/*dup2_x1*/,
    519     {}/*dup2_x2*/, {}/*swap*/, {}/*iadd*/, {}/*ladd*/, {}/*fadd*/,
    520     {}/*dadd*/, {}/*isub*/, {}/*lsub*/, {}/*fsub*/, {}/*dsub*/,
    521     {}/*imul*/, {}/*lmul*/, {}/*fmul*/, {}/*dmul*/, {}/*idiv*/,
    522     {}/*ldiv*/, {}/*fdiv*/, {}/*ddiv*/, {}/*irem*/, {}/*lrem*/,
    523     {}/*frem*/, {}/*drem*/, {}/*ineg*/, {}/*lneg*/, {}/*fneg*/,
    524     {}/*dneg*/, {}/*ishl*/, {}/*lshl*/, {}/*ishr*/, {}/*lshr*/,
    525     {}/*iushr*/, {}/*lushr*/, {}/*iand*/, {}/*land*/, {}/*ior*/,
    526     {}/*lor*/, {}/*ixor*/, {}/*lxor*/, {T_BYTE, T_BYTE}/*iinc*/,
    527     {}/*i2l*/, {}/*i2f*/, {}/*i2d*/, {}/*l2i*/, {}/*l2f*/, {}/*l2d*/,
    528     {}/*f2i*/, {}/*f2l*/, {}/*f2d*/, {}/*d2i*/, {}/*d2l*/, {}/*d2f*/,
    529     {}/*i2b*/, {}/*i2c*/,{}/*i2s*/, {}/*lcmp*/, {}/*fcmpl*/,
    530     {}/*fcmpg*/, {}/*dcmpl*/, {}/*dcmpg*/, {T_SHORT}/*ifeq*/,
    531     {T_SHORT}/*ifne*/, {T_SHORT}/*iflt*/, {T_SHORT}/*ifge*/,
    532     {T_SHORT}/*ifgt*/, {T_SHORT}/*ifle*/, {T_SHORT}/*if_icmpeq*/,
    533     {T_SHORT}/*if_icmpne*/, {T_SHORT}/*if_icmplt*/,
    534     {T_SHORT}/*if_icmpge*/, {T_SHORT}/*if_icmpgt*/,
    535     {T_SHORT}/*if_icmple*/, {T_SHORT}/*if_acmpeq*/,
    536     {T_SHORT}/*if_acmpne*/, {T_SHORT}/*goto*/, {T_SHORT}/*jsr*/,
    537     {T_BYTE}/*ret*/, {}/*tableswitch*/, {}/*lookupswitch*/,
    538     {}/*ireturn*/, {}/*lreturn*/, {}/*freturn*/, {}/*dreturn*/,
    539     {}/*areturn*/, {}/*return*/, {T_SHORT}/*getstatic*/,
    540     {T_SHORT}/*putstatic*/, {T_SHORT}/*getfield*/,
    541     {T_SHORT}/*putfield*/, {T_SHORT}/*invokevirtual*/,
    542     {T_SHORT}/*invokespecial*/, {T_SHORT}/*invokestatic*/,
    543     {T_SHORT, T_BYTE, T_BYTE}/*invokeinterface*/, {},
    544     {T_SHORT}/*new*/, {T_BYTE}/*newarray*/,
    545     {T_SHORT}/*anewarray*/, {}/*arraylength*/, {}/*athrow*/,
    546     {T_SHORT}/*checkcast*/, {T_SHORT}/*instanceof*/,
    547     {}/*monitorenter*/, {}/*monitorexit*/, {T_BYTE}/*wide*/,
    548     {T_SHORT, T_BYTE}/*multianewarray*/, {T_SHORT}/*ifnull*/,
    549     {T_SHORT}/*ifnonnull*/, {T_INT}/*goto_w*/, {T_INT}/*jsr_w*/,
    550     {}/*breakpoint*/, {}, {}, {}, {}, {}, {}, {},
    551     {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
    552     {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
    553     {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
    554     {}/*impdep1*/, {}/*impdep2*/
    555   };
    556
    557   /***
    558    * Names of opcodes.
    559    */
    560   public static final String[] OPCODE_NAMES = {
    561     "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1",
    562     "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0",
    563     "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0",
    564     "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload",
    565     "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2",
    566     "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0",
    567     "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2",
    568     "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload",
    569     "laload", "faload", "daload", "aaload", "baload", "caload", "saload",
    570     "istore", "lstore", "fstore", "dstore", "astore", "istore_0",
    571     "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1",
    572     "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2",
    573     "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3",
    574     "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore",
    575     "fastore", "dastore", "aastore", "bastore", "castore", "sastore",
    576     "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1",
    577     "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub",
    578     "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv",
    579     "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg",
    580     "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr",
    581     "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f",
    582     "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f",
    583     "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg",
    584     "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle",
    585     "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt",
    586     "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret",
    587     "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn",
    588     "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield",
    589     "putfield", "invokevirtual", "invokespecial", "invokestatic",
    590     "invokeinterface", ILLEGAL_OPCODE, "new", "newarray", "anewarray",
    591     "arraylength", "athrow", "checkcast", "instanceof", "monitorenter",
    592     "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull",
    593     "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    594     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    595     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    596     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    597     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    598     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    599     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    600     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    601     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    602     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    603     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    604     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    605     ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    606     ILLEGAL_OPCODE, "impdep1", "impdep2"
    607   };
    608
    609   /***
    610    * Number of words consumed on operand stack by instructions.
    611    */
    612   public static final int[] CONSUME_STACK = {
    613     0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, 0/*iconst_1*/,
    614     0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, 0/*iconst_5*/, 0/*lconst_0*/,
    615     0/*lconst_1*/, 0/*fconst_0*/, 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/,
    616     0/*dconst_1*/, 0/*bipush*/, 0/*sipush*/, 0/*ldc*/, 0/*ldc_w*/, 0/*ldc2_w*/, 0/*iload*/,
    617     0/*lload*/, 0/*fload*/, 0/*dload*/, 0/*aload*/, 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/,
    618     0/*iload_3*/, 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, 0/*fload_0*/,
    619     0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/,
    620     0/*dload_3*/, 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, 2/*iaload*/,
    621     2/*laload*/, 2/*faload*/, 2/*daload*/, 2/*aaload*/, 2/*baload*/, 2/*caload*/, 2/*saload*/,
    622     1/*istore*/, 2/*lstore*/, 1/*fstore*/, 2/*dstore*/, 1/*astore*/, 1/*istore_0*/,
    623     1/*istore_1*/, 1/*istore_2*/, 1/*istore_3*/, 2/*lstore_0*/, 2/*lstore_1*/,
    624     2/*lstore_2*/, 2/*lstore_3*/, 1/*fstore_0*/, 1/*fstore_1*/, 1/*fstore_2*/,
    625     1/*fstore_3*/, 2/*dstore_0*/, 2/*dstore_1*/, 2/*dstore_2*/, 2/*dstore_3*/,
    626     1/*astore_0*/, 1/*astore_1*/, 1/*astore_2*/, 1/*astore_3*/, 3/*iastore*/, 4/*lastore*/,
    627     3/*fastore*/, 4/*dastore*/, 3/*aastore*/, 3/*bastore*/, 3/*castore*/, 3/*sastore*/,
    628     1/*pop*/, 2/*pop2*/, 1/*dup*/, 2/*dup_x1*/, 3/*dup_x2*/, 2/*dup2*/, 3/*dup2_x1*/,
    629     4/*dup2_x2*/, 2/*swap*/, 2/*iadd*/, 4/*ladd*/, 2/*fadd*/, 4/*dadd*/, 2/*isub*/, 4/*lsub*/,
    630     2/*fsub*/, 4/*dsub*/, 2/*imul*/, 4/*lmul*/, 2/*fmul*/, 4/*dmul*/, 2/*idiv*/, 4/*ldiv*/,
    631     2/*fdiv*/, 4/*ddiv*/, 2/*irem*/, 4/*lrem*/, 2/*frem*/, 4/*drem*/, 1/*ineg*/, 2/*lneg*/,
    632     1/*fneg*/, 2/*dneg*/, 2/*ishl*/, 3/*lshl*/, 2/*ishr*/, 3/*lshr*/, 2/*iushr*/, 3/*lushr*/,
    633     2/*iand*/, 4/*land*/, 2/*ior*/, 4/*lor*/, 2/*ixor*/, 4/*lxor*/, 0/*iinc*/,
    634     1/*i2l*/, 1/*i2f*/, 1/*i2d*/, 2/*l2i*/, 2/*l2f*/, 2/*l2d*/, 1/*f2i*/, 1/*f2l*/,
    635     1/*f2d*/, 2/*d2i*/, 2/*d2l*/, 2/*d2f*/, 1/*i2b*/, 1/*i2c*/, 1/*i2s*/,
    636     4/*lcmp*/, 2/*fcmpl*/, 2/*fcmpg*/, 4/*dcmpl*/, 4/*dcmpg*/, 1/*ifeq*/, 1/*ifne*/,
    637     1/*iflt*/, 1/*ifge*/, 1/*ifgt*/, 1/*ifle*/, 2/*if_icmpeq*/, 2/*if_icmpne*/, 2/*if_icmplt*/,
    638     2 /*if_icmpge*/, 2/*if_icmpgt*/, 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/,
    639     0/*goto*/, 0/*jsr*/, 0/*ret*/, 1/*tableswitch*/, 1/*lookupswitch*/, 1/*ireturn*/,
    640     2/*lreturn*/, 1/*freturn*/, 2/*dreturn*/, 1/*areturn*/, 0/*return*/, 0/*getstatic*/,
    641     UNPREDICTABLE/*putstatic*/, 1/*getfield*/, UNPREDICTABLE/*putfield*/,
    642     UNPREDICTABLE/*invokevirtual*/, UNPREDICTABLE/*invokespecial*/,
    643     UNPREDICTABLE/*invokestatic*/,
    644     UNPREDICTABLE/*invokeinterface*/, UNDEFINED, 0/*new*/, 1/*newarray*/, 1/*anewarray*/,
    645     1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 1/*monitorenter*/,
    646     1/*monitorexit*/, 0/*wide*/, UNPREDICTABLE/*multianewarray*/, 1/*ifnull*/, 1/*ifnonnull*/,
    647     0/*goto_w*/, 0/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED,
    648     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    649     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    650     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    651     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    652     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    653     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    654     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    655     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    656     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    657     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    658     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    659     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    660     UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/
    661   };
    662
    663   /***
    664    * Number of words produced onto operand stack by instructions.
    665    */
    666   public static final int[] PRODUCE_STACK = {
    667     0/*nop*/, 1/*aconst_null*/, 1/*iconst_m1*/, 1/*iconst_0*/, 1/*iconst_1*/,
    668     1/*iconst_2*/, 1/*iconst_3*/, 1/*iconst_4*/, 1/*iconst_5*/, 2/*lconst_0*/,
    669     2/*lconst_1*/, 1/*fconst_0*/, 1/*fconst_1*/, 1/*fconst_2*/, 2/*dconst_0*/,
    670     2/*dconst_1*/, 1/*bipush*/, 1/*sipush*/, 1/*ldc*/, 1/*ldc_w*/, 2/*ldc2_w*/, 1/*iload*/,
    671     2/*lload*/, 1/*fload*/, 2/*dload*/, 1/*aload*/, 1/*iload_0*/, 1/*iload_1*/, 1/*iload_2*/,
    672     1/*iload_3*/, 2/*lload_0*/, 2/*lload_1*/, 2/*lload_2*/, 2/*lload_3*/, 1/*fload_0*/,
    673     1/*fload_1*/, 1/*fload_2*/, 1/*fload_3*/, 2/*dload_0*/, 2/*dload_1*/, 2/*dload_2*/,
    674     2/*dload_3*/, 1/*aload_0*/, 1/*aload_1*/, 1/*aload_2*/, 1/*aload_3*/, 1/*iaload*/,
    675     2/*laload*/, 1/*faload*/, 2/*daload*/, 1/*aaload*/, 1/*baload*/, 1/*caload*/, 1/*saload*/,
    676     0/*istore*/, 0/*lstore*/, 0/*fstore*/, 0/*dstore*/, 0/*astore*/, 0/*istore_0*/,
    677     0/*istore_1*/, 0/*istore_2*/, 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/,
    678     0/*lstore_2*/, 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/,
    679     0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, 0/*dstore_3*/,
    680     0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/,
    681     0/*fastore*/, 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, 0/*sastore*/,
    682     0/*pop*/, 0/*pop2*/, 2/*dup*/, 3/*dup_x1*/, 4/*dup_x2*/, 4/*dup2*/, 5/*dup2_x1*/,
    683     6/*dup2_x2*/, 2/*swap*/, 1/*iadd*/, 2/*ladd*/, 1/*fadd*/, 2/*dadd*/, 1/*isub*/, 2/*lsub*/,
    684     1/*fsub*/, 2/*dsub*/, 1/*imul*/, 2/*lmul*/, 1/*fmul*/, 2/*dmul*/, 1/*idiv*/, 2/*ldiv*/,
    685     1/*fdiv*/, 2/*ddiv*/, 1/*irem*/, 2/*lrem*/, 1/*frem*/, 2/*drem*/, 1/*ineg*/, 2/*lneg*/,
    686     1/*fneg*/, 2/*dneg*/, 1/*ishl*/, 2/*lshl*/, 1/*ishr*/, 2/*lshr*/, 1/*iushr*/, 2/*lushr*/,
    687     1/*iand*/, 2/*land*/, 1/*ior*/, 2/*lor*/, 1/*ixor*/, 2/*lxor*/,
    688     0/*iinc*/, 2/*i2l*/, 1/*i2f*/, 2/*i2d*/, 1/*l2i*/, 1/*l2f*/, 2/*l2d*/, 1/*f2i*/,
    689     2/*f2l*/, 2/*f2d*/, 1/*d2i*/, 2/*d2l*/, 1/*d2f*/,
    690     1/*i2b*/, 1/*i2c*/, 1/*i2s*/, 1/*lcmp*/, 1/*fcmpl*/, 1/*fcmpg*/,
    691     1/*dcmpl*/, 1/*dcmpg*/, 0/*ifeq*/, 0/*ifne*/, 0/*iflt*/, 0/*ifge*/, 0/*ifgt*/, 0/*ifle*/,
    692     0/*if_icmpeq*/, 0/*if_icmpne*/, 0/*if_icmplt*/, 0/*if_icmpge*/, 0/*if_icmpgt*/,
    693     0/*if_icmple*/, 0/*if_acmpeq*/, 0/*if_acmpne*/, 0/*goto*/, 1/*jsr*/, 0/*ret*/,
    694     0/*tableswitch*/, 0/*lookupswitch*/, 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/,
    695     0/*dreturn*/, 0/*areturn*/, 0/*return*/, UNPREDICTABLE/*getstatic*/, 0/*putstatic*/,
    696     UNPREDICTABLE/*getfield*/, 0/*putfield*/, UNPREDICTABLE/*invokevirtual*/,
    697     UNPREDICTABLE/*invokespecial*/, UNPREDICTABLE/*invokestatic*/,
    698     UNPREDICTABLE/*invokeinterface*/, UNDEFINED, 1/*new*/, 1/*newarray*/, 1/*anewarray*/,
    699     1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 0/*monitorenter*/,
    700     0/*monitorexit*/, 0/*wide*/, 1/*multianewarray*/, 0/*ifnull*/, 0/*ifnonnull*/,
    701     0/*goto_w*/, 1/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED,
    702     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    703     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    704     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    705     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    706     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    707     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    708     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    709     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    710     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    711     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    712     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    713     UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    714     UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/
    715   };
    716
    717   /*** Attributes and their corresponding names.
    718    */
    719   public static final byte ATTR_UNKNOWN                       			= -1;
    720   public static final byte ATTR_SOURCE_FILE                   			= 0;
    721   public static final byte ATTR_CONSTANT_VALUE                			= 1;
    722   public static final byte ATTR_CODE                          			= 2;
    723   public static final byte ATTR_EXCEPTIONS                    			= 3;
    724   public static final byte ATTR_LINE_NUMBER_TABLE             			= 4;
    725   public static final byte ATTR_LOCAL_VARIABLE_TABLE          			= 5;
    726   public static final byte ATTR_INNER_CLASSES                 			= 6;
    727   public static final byte ATTR_SYNTHETIC                     			= 7;
    728   public static final byte ATTR_DEPRECATED                    			= 8;
    729   public static final byte ATTR_PMG                           			= 9;
    730   public static final byte ATTR_SIGNATURE                     			= 10;
    731   public static final byte ATTR_STACK_MAP                     			= 11;
    732   public static final byte ATTR_RUNTIMEVISIBLE_ANNOTATIONS    			= 12;
    733   public static final byte ATTR_RUNTIMEINVISIBLE_ANNOTATIONS  			= 13;
    734   public static final byte ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS 	= 14;
    735   public static final byte ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS 	= 15;
    736   public static final byte ATTR_ANNOTATION_DEFAULT                      = 16;
    737
    738   public static final short KNOWN_ATTRIBUTES = 12;//should be 17
    739
    740   public static final String[] ATTRIBUTE_NAMES = {
    741     "SourceFile", "ConstantValue", "Code", "Exceptions",
    742     "LineNumberTable", "LocalVariableTable",
    743     "InnerClasses", "Synthetic", "Deprecated",
    744     "PMGClass", "Signature", "StackMap",
    745     "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
    746     "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations",
    747     "AnnotationDefault"
    748   };
    749
    750   /*** Constants used in the StackMap attribute.
    751    */
    752   public static final byte ITEM_Bogus      = 0;
    753   public static final byte ITEM_Integer    = 1;
    754   public static final byte ITEM_Float      = 2;
    755   public static final byte ITEM_Double     = 3;
    756   public static final byte ITEM_Long       = 4;
    757   public static final byte ITEM_Null       = 5;
    758   public static final byte ITEM_InitObject = 6;
    759   public static final byte ITEM_Object     = 7;
    760   public static final byte ITEM_NewObject  = 8;
    761
    762   public static final String[] ITEM_NAMES = {
    763     "Bogus", "Integer", "Float", "Double", "Long",
    764     "Null", "InitObject", "Object", "NewObject"
    765   };
    766 }