Source code

    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one or more
    003 * contributor license agreements.  See the NOTICE file distributed with
    004 * this work for additional information regarding copyright ownership.
    005 * The ASF licenses this file to You under the Apache License, Version 2.0
    006 * (the "License"); you may not use this file except in compliance with
    007 * the License.  You may obtain a copy of the License at
    008 *
    009 *      http://www.apache.org/licenses/LICENSE-2.0
    010 *
    011 *  Unless required by applicable law or agreed to in writing, software
    012 *  distributed under the License is distributed on an "AS IS" BASIS,
    013 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014 *  See the License for the specific language governing permissions and
    015 *  limitations under the License.
    016 *
    017 */
    018package org.apache.bcel;
    019
    020import java.util.Arrays;
    021import java.util.Collections;
    022
    023/**
    024 * Constants for the project, mostly defined in the JVM specification.
    025 *
    026 * @since 6.0 (intended to replace the Constants interface)
    027 */
    028public final class Const {
    029
    030  /**
    031   * Java class file format Magic number (0xCAFEBABE)
    032   *
    033   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.1-200-A">
    034   * The ClassFile Structure in The Java Virtual Machine Specification</a>
    035   */
    036  public static final int JVM_CLASSFILE_MAGIC = 0xCAFEBABE;
    037
    038  /** Major version number of class files for Java 1.1.
    039   *  @see #MINOR_1_1
    040   *  */
    041  public static final short MAJOR_1_1 = 45;
    042
    043  /** Minor version number of class files for Java 1.1.
    044   *  @see #MAJOR_1_1
    045   *  */
    046  public static final short MINOR_1_1 = 3;
    047
    048  /** Major version number of class files for Java 1.2.
    049   *  @see #MINOR_1_2
    050   *  */
    051  public static final short MAJOR_1_2 = 46;
    052
    053  /** Minor version number of class files for Java 1.2.
    054   *  @see #MAJOR_1_2
    055   *  */
    056  public static final short MINOR_1_2 = 0;
    057
    058  /** Major version number of class files for Java 1.2.
    059   *  @see #MINOR_1_2
    060   *  */
    061  public static final short MAJOR_1_3 = 47;
    062
    063  /** Minor version number of class files for Java 1.3.
    064   *  @see #MAJOR_1_3
    065   *  */
    066  public static final short MINOR_1_3 = 0;
    067
    068  /** Major version number of class files for Java 1.3.
    069   *  @see #MINOR_1_3
    070   *  */
    071  public static final short MAJOR_1_4 = 48;
    072
    073  /** Minor version number of class files for Java 1.4.
    074   *  @see #MAJOR_1_4
    075   *  */
    076  public static final short MINOR_1_4 = 0;
    077
    078  /** Major version number of class files for Java 1.4.
    079   *  @see #MINOR_1_4
    080   *  */
    081  public static final short MAJOR_1_5 = 49;
    082
    083  /** Minor version number of class files for Java 1.5.
    084   *  @see #MAJOR_1_5
    085   *  */
    086  public static final short MINOR_1_5 = 0;
    087
    088  /** Major version number of class files for Java 1.6.
    089   *  @see #MINOR_1_6
    090   *  */
    091  public static final short MAJOR_1_6 = 50;
    092
    093  /** Minor version number of class files for Java 1.6.
    094   *  @see #MAJOR_1_6
    095   *  */
    096  public static final short MINOR_1_6 = 0;
    097
    098  /** Major version number of class files for Java 1.7.
    099   *  @see #MINOR_1_7
    100   *  */
    101  public static final short MAJOR_1_7 = 51;
    102
    103  /** Minor version number of class files for Java 1.7.
    104   *  @see #MAJOR_1_7
    105   *  */
    106  public static final short MINOR_1_7 = 0;
    107
    108  /** Major version number of class files for Java 1.8.
    109   *  @see #MINOR_1_8
    110   *  */
    111  public static final short MAJOR_1_8 = 52;
    112
    113  /** Minor version number of class files for Java 1.8.
    114   *  @see #MAJOR_1_8
    115   *  */
    116  public static final short MINOR_1_8 = 0;
    117
    118  /** Major version number of class files for Java 9.
    119   *  @see #MINOR_9
    120   *  */
    121  public static final short MAJOR_9 = 53;
    122
    123  /** Minor version number of class files for Java 9.
    124   *  @see #MAJOR_9
    125   *  */
    126  public static final short MINOR_9 = 0;
    127
    128  /**
    129   * @deprecated Use {@link #MAJOR_9} instead
    130   */
    131  @Deprecated
    132  public static final short MAJOR_1_9 = MAJOR_9;
    133
    134  /**
    135   * @deprecated Use {@link #MINOR_9} instead
    136   */
    137  @Deprecated
    138  public static final short MINOR_1_9 = MINOR_9;
    139
    140  /** Major version number of class files for Java 10.
    141   *  @see #MINOR_10
    142   *  */
    143  public static final short MAJOR_10 = 54;
    144
    145  /** Minor version number of class files for Java 10.
    146   *  @see #MAJOR_10
    147   *  */
    148  public static final short MINOR_10 = 0;
    149
    150  /** Major version number of class files for Java 11.
    151   *  @see #MINOR_11
    152   *  */
    153  public static final short MAJOR_11 = 55;
    154
    155  /** Minor version number of class files for Java 11.
    156   *  @see #MAJOR_11
    157   *  */
    158  public static final short MINOR_11 = 0;
    159
    160  /** Major version number of class files for Java 12.
    161   *  @see #MINOR_12
    162   *  */
    163  public static final short MAJOR_12 = 56;
    164
    165  /** Minor version number of class files for Java 12.
    166   *  @see #MAJOR_12
    167   *  */
    168  public static final short MINOR_12 = 0;
    169
    170  /** Major version number of class files for Java 13.
    171   *  @see #MINOR_13
    172   *  */
    173  public static final short MAJOR_13 = 57;
    174
    175  /** Minor version number of class files for Java 13.
    176   *  @see #MAJOR_13
    177   *  */
    178  public static final short MINOR_13 = 0;
    179
    180  /** Major version number of class files for Java 14.
    181   *  @see #MINOR_14
    182   *  @since 6.4.0
    183   *  */
    184  public static final short MAJOR_14 = 58;
    185
    186  /** Minor version number of class files for Java 14.
    187   *  @see #MAJOR_14
    188   *  @since 6.4.0
    189   *  */
    190  public static final short MINOR_14 = 0;
    191
    192  /** Default major version number.  Class file is for Java 1.1.
    193   *  @see #MAJOR_1_1
    194   *  */
    195  public static final short MAJOR = MAJOR_1_1;
    196
    197  /** Default major version number.  Class file is for Java 1.1.
    198   *  @see #MAJOR_1_1
    199   *  */
    200  public static final short MINOR     = MINOR_1_1;
    201
    202  /** Maximum value for an unsigned short.
    203   */
    204  public static final int MAX_SHORT = 65535; // 2^16 - 1
    205
    206  /** Maximum value for an unsigned byte.
    207   */
    208  public static final int MAX_BYTE  = 255; // 2^8 - 1
    209
    210  /** One of the access flags for fields, methods, or classes.
    211   *  @see <a href='http://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.1-200-E.1'>
    212   *  Flag definitions for Classes in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    213   *  @see <a href='http://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.5'>
    214   *  Flag definitions for Fields in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    215   *  @see <a href='http://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.6'>
    216   *  Flag definitions for Methods in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    217   *  @see <a href='http://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.6-300-D.1-D.1'>
    218   *  Flag definitions for Inner Classes in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    219   */
    220  public static final short ACC_PUBLIC       = 0x0001;
    221
    222  /** One of the access flags for fields, methods, or classes.
    223   *  @see #ACC_PUBLIC
    224   */
    225  public static final short ACC_PRIVATE      = 0x0002;
    226
    227  /** One of the access flags for fields, methods, or classes.
    228   *  @see #ACC_PUBLIC
    229   */
    230  public static final short ACC_PROTECTED    = 0x0004;
    231
    232  /** One of the access flags for fields, methods, or classes.
    233   *  @see #ACC_PUBLIC
    234   */
    235  public static final short ACC_STATIC       = 0x0008;
    236
    237  /** One of the access flags for fields, methods, or classes.
    238   *  @see #ACC_PUBLIC
    239   */
    240  public static final short ACC_FINAL        = 0x0010;
    241
    242  /** One of the access flags for the Module attribute.
    243   *  @see #ACC_PUBLIC
    244   */
    245  public static final short ACC_OPEN         = 0x0020;
    246
    247  /** One of the access flags for classes.
    248   *  @see #ACC_PUBLIC
    249   */
    250  public static final short ACC_SUPER        = 0x0020;
    251
    252  /** One of the access flags for methods.
    253   *  @see #ACC_PUBLIC
    254   */
    255  public static final short ACC_SYNCHRONIZED = 0x0020;
    256
    257  /** One of the access flags for the Module attribute.
    258   *  @see #ACC_PUBLIC
    259   */
    260  public static final short ACC_TRANSITIVE   = 0x0020;
    261
    262  /** One of the access flags for methods.
    263   *  @see #ACC_PUBLIC
    264   */
    265  public static final short ACC_BRIDGE       = 0x0040;
    266
    267  /** One of the access flags for the Module attribute.
    268   *  @see #ACC_PUBLIC
    269   */
    270  public static final short ACC_STATIC_PHASE = 0x0040;
    271
    272  /** One of the access flags for fields.
    273   *  @see #ACC_PUBLIC
    274   */
    275  public static final short ACC_VOLATILE     = 0x0040;
    276
    277  /** One of the access flags for fields.
    278   *  @see #ACC_PUBLIC
    279   */
    280  public static final short ACC_TRANSIENT    = 0x0080;
    281
    282  /** One of the access flags for methods.
    283   *  @see #ACC_PUBLIC
    284   */
    285  public static final short ACC_VARARGS      = 0x0080;
    286
    287  /** One of the access flags for methods.
    288   *  @see #ACC_PUBLIC
    289   */
    290  public static final short ACC_NATIVE       = 0x0100;
    291
    292  /** One of the access flags for classes.
    293   *  @see #ACC_PUBLIC
    294   */
    295  public static final short ACC_INTERFACE    = 0x0200;
    296
    297  /** One of the access flags for methods or classes.
    298   *  @see #ACC_PUBLIC
    299   */
    300  public static final short ACC_ABSTRACT     = 0x0400;
    301
    302  /** One of the access flags for methods.
    303   *  @see #ACC_PUBLIC
    304   */
    305  public static final short ACC_STRICT       = 0x0800;
    306
    307  /** One of the access flags for fields, methods, classes, MethodParameter attribute, or Module attribute.
    308   *  @see #ACC_PUBLIC
    309   */
    310  public static final short ACC_SYNTHETIC    = 0x1000;
    311
    312  /** One of the access flags for classes.
    313   *  @see #ACC_PUBLIC
    314   */
    315  public static final short ACC_ANNOTATION   = 0x2000;
    316
    317  /** One of the access flags for fields or classes.
    318   *  @see #ACC_PUBLIC
    319   */
    320  public static final short ACC_ENUM         = 0x4000;
    321
    322  // Applies to classes compiled by new compilers only
    323  /** One of the access flags for MethodParameter or Module attributes.
    324   *  @see #ACC_PUBLIC
    325   */
    326  public static final short ACC_MANDATED     = (short) 0x8000;
    327
    328  /** One of the access flags for classes.
    329   *  @see #ACC_PUBLIC
    330   */
    331  public static final short ACC_MODULE       = (short) 0x8000;
    332
    333  /** One of the access flags for fields, methods, or classes.
    334   *  @see #ACC_PUBLIC
    335   *  @deprecated Use {@link #MAX_ACC_FLAG_I}
    336   */
    337  @Deprecated
    338  public static final short MAX_ACC_FLAG     = ACC_ENUM;
    339
    340  /** One of the access flags for fields, methods, or classes.
    341   * ACC_MODULE is negative as a short.
    342   * @see #ACC_PUBLIC
    343   * @since 6.4.0
    344   */
    345  public static final int MAX_ACC_FLAG_I = 0x8000; // ACC_MODULE is negative as a short
    346
    347  // Note that do to overloading:
    348  // 'synchronized' is for methods, might be 'open' (if Module), 'super' (if class), or 'transitive' (if Module).
    349  // 'volatile'     is for fields,  might be 'bridge' (if method) or 'static_phase' (if Module)
    350  // 'transient'    is for fields,  might be 'varargs' (if method)
    351  // 'module'       is for classes, might be 'mandated' (if Module or MethodParameters)
    352  /**
    353   * The names of the access flags.
    354   */
    355  private static final String[] ACCESS_NAMES = {
    356    "public", "private", "protected", "static", "final", "synchronized",
    357    "volatile", "transient", "native", "interface", "abstract", "strictfp",
    358    "synthetic", "annotation", "enum", "module"
    359  };
    360
    361  /** @since 6.0 */
    362  public static final int ACCESS_NAMES_LENGTH = ACCESS_NAMES.length;
    363
    364  /**
    365   * @param index
    366   * @return the ACCESS_NAMES entry at the given index
    367   * @since 6.0
    368   */
    369  public static String getAccessName(final int index) {
    370      return ACCESS_NAMES[index];
    371  }
    372
    373  /*
    374   * The description of the constant pool is at:
    375   * http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4
    376   * References below are to the individual sections
    377   */
    378
    379  /**
    380   * Marks a constant pool entry as type UTF-8.
    381   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.7">
    382   * The Constant Pool in The Java Virtual Machine Specification</a>
    383   */
    384  public static final byte CONSTANT_Utf8               = 1;
    385
    386  /**
    387   * Marks a constant pool entry as type Integer.
    388   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4">
    389   * The Constant Pool in The Java Virtual Machine Specification</a>
    390   */
    391  public static final byte CONSTANT_Integer            = 3;
    392
    393  /**
    394   * Marks a constant pool entry as type Float.
    395   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4">
    396   * The Constant Pool in The Java Virtual Machine Specification</a>
    397   */
    398  public static final byte CONSTANT_Float              = 4;
    399
    400  /**
    401   * Marks a constant pool entry as type Long.
    402   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5">
    403   * The Constant Pool in The Java Virtual Machine Specification</a>
    404   */
    405  public static final byte CONSTANT_Long               = 5;
    406
    407  /**
    408   * Marks a constant pool entry as type Double.
    409   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5">
    410   * The Constant Pool in The Java Virtual Machine Specification</a>
    411   */
    412  public static final byte CONSTANT_Double             = 6;
    413
    414  /**
    415   * Marks a constant pool entry as a Class
    416   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1">
    417   * The Constant Pool in The Java Virtual Machine Specification</a>
    418   */
    419  public static final byte CONSTANT_Class              = 7;
    420
    421  /**
    422   * Marks a constant pool entry as a Field Reference.
    423   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2">
    424   * The Constant Pool in The Java Virtual Machine Specification</a>
    425   */
    426  public static final byte CONSTANT_Fieldref           = 9;
    427
    428  /**
    429   * Marks a constant pool entry as type String
    430   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.3">
    431   * The Constant Pool in The Java Virtual Machine Specification</a>
    432   */
    433  public static final byte CONSTANT_String             = 8;
    434
    435  /** Marks a constant pool entry as a Method Reference.
    436   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2">
    437   * The Constant Pool in The Java Virtual Machine Specification</a> */
    438  public static final byte CONSTANT_Methodref          = 10;
    439
    440  /**
    441   * Marks a constant pool entry as an Interface Method Reference.
    442   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2">
    443   * The Constant Pool in The Java Virtual Machine Specification</a>
    444   */
    445  public static final byte CONSTANT_InterfaceMethodref = 11;
    446
    447  /** Marks a constant pool entry as a name and type.
    448   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.6">
    449   * The Constant Pool in The Java Virtual Machine Specification</a> */
    450  public static final byte CONSTANT_NameAndType        = 12;
    451
    452  /**
    453   * Marks a constant pool entry as a Method Handle.
    454   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.8">
    455   * The Constant Pool in The Java Virtual Machine Specification</a>
    456   */
    457  public static final byte CONSTANT_MethodHandle       = 15;
    458
    459  /**
    460   * Marks a constant pool entry as a Method Type.
    461   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.9">
    462   * The Constant Pool in The Java Virtual Machine Specification</a>
    463   */
    464  public static final byte CONSTANT_MethodType         = 16;
    465
    466  /**
    467   * Marks a constant pool entry as dynamically computed.
    468   * @see  <a href="https://bugs.openjdk.java.net/secure/attachment/74618/constant-dynamic.html">
    469   * Change request for JEP 309</a>
    470   * @since 6.3
    471   */
    472  public static final byte CONSTANT_Dynamic            = 17;
    473
    474  /**
    475   * Marks a constant pool entry as an Invoke Dynamic
    476   * @see  <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.10">
    477   * The Constant Pool in The Java Virtual Machine Specification</a>
    478   */
    479  public static final byte CONSTANT_InvokeDynamic      = 18;
    480
    481  /**
    482   * Marks a constant pool entry as a Module Reference.
    483   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4.11">
    484   * The Constant Pool in The Java Virtual Machine Specification</a>
    485   * @since 6.1
    486   */
    487  public static final byte CONSTANT_Module             = 19;
    488
    489  /**
    490   * Marks a constant pool entry as a Package Reference.
    491   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4.12">
    492   * The Constant Pool in The Java Virtual Machine Specification</a>
    493   * @since 6.1
    494   */
    495  public static final byte CONSTANT_Package            = 20;
    496
    497  /**
    498   * The names of the types of entries in a constant pool.
    499   * Use getConstantName instead
    500   */
    501  private static final String[] CONSTANT_NAMES = {
    502    "", "CONSTANT_Utf8", "", "CONSTANT_Integer",
    503    "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double",
    504    "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref",
    505    "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref",
    506    "CONSTANT_NameAndType", "", "", "CONSTANT_MethodHandle",
    507    "CONSTANT_MethodType", "CONSTANT_Dynamic", "CONSTANT_InvokeDynamic",
    508    "CONSTANT_Module", "CONSTANT_Package"};
    509
    510  /**
    511   *
    512   * @param index
    513   * @return the CONSTANT_NAMES entry at the given index
    514   * @since 6.0
    515   */
    516  public static String getConstantName(final int index) {
    517      return CONSTANT_NAMES[index];
    518  }
    519
    520  /** The name of the static initializer, also called &quot;class
    521   *  initialization method&quot; or &quot;interface initialization
    522   *   method&quot;. This is &quot;&lt;clinit&gt;&quot;.
    523   */
    524  public static final String STATIC_INITIALIZER_NAME = "<clinit>";
    525
    526  /** The name of every constructor method in a class, also called
    527   * &quot;instance initialization method&quot;. This is &quot;&lt;init&gt;&quot;.
    528   */
    529  public static final String CONSTRUCTOR_NAME = "<init>";
    530
    531  /**
    532   * The names of the interfaces implemented by arrays
    533   */
    534  private static final String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"};
    535
    536  /**
    537   * @since 6.0
    538   */
    539  public static Iterable<String> getInterfacesImplementedByArrays() {
    540      return Collections.unmodifiableList(Arrays.asList(INTERFACES_IMPLEMENTED_BY_ARRAYS));
    541  }
    542
    543  /**
    544   * Maximum Constant Pool entries.
    545   * One of the limitations of the Java Virtual Machine.
    546   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.11-100-A">
    547   * The Java Virtual Machine Specification, Java SE 8 Edition, page 330, chapter 4.11.</a>
    548   */
    549  public static final int MAX_CP_ENTRIES     = 65535;
    550
    551  /**
    552   * Maximum code size (plus one; the code size must be LESS than this)
    553   * One of the limitations of the Java Virtual Machine.
    554   * Note vmspec2 page 152 ("Limitations") says:
    555   * "The amount of code per non-native, non-abstract method is limited to 65536 bytes by
    556   * the sizes of the indices in the exception_table of the Code attribute (§4.7.3),
    557   * in the LineNumberTable attribute (§4.7.8), and in the LocalVariableTable attribute (§4.7.9)."
    558   * However this should be taken as an upper limit rather than the defined maximum.
    559   * On page 134 (4.8.1 Static Constants) of the same spec, it says:
    560   * "The value of the code_length item must be less than 65536."
    561   * The entry in the Limitations section has been removed from later versions of the spec;
    562   * it is not present in the Java SE 8 edition.
    563   *
    564   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3-300-E">
    565   * The Java Virtual Machine Specification, Java SE 8 Edition, page 104, chapter 4.7.</a>
    566   */
    567  public static final int MAX_CODE_SIZE      = 65536; //bytes
    568
    569  /**
    570   * The maximum number of dimensions in an array ({@value}).
    571   * One of the limitations of the Java Virtual Machine.
    572   *
    573   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.2-150">
    574   * Field Descriptors in The Java Virtual Machine Specification</a>
    575   */
    576  public static final int MAX_ARRAY_DIMENSIONS = 255;
    577
    578  /** Java VM opcode.
    579   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.nop">
    580   * Opcode definitions in The Java Virtual Machine Specification</a> */
    581  public static final short NOP              = 0;
    582
    583  /** Java VM opcode.
    584   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aconst_null">
    585   * Opcode definitions in The Java Virtual Machine Specification</a> */
    586  public static final short ACONST_NULL      = 1;
    587
    588  /** Java VM opcode.
    589   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    590   * Opcode definitions in The Java Virtual Machine Specification</a> */
    591  public static final short ICONST_M1        = 2;
    592
    593  /** Java VM opcode.
    594   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    595   * Opcode definitions in The Java Virtual Machine Specification</a> */
    596  public static final short ICONST_0         = 3;
    597
    598  /** Java VM opcode.
    599   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    600   * Opcode definitions in The Java Virtual Machine Specification</a> */
    601  public static final short ICONST_1         = 4;
    602
    603  /** Java VM opcode.
    604   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    605   * Opcode definitions in The Java Virtual Machine Specification</a> */
    606  public static final short ICONST_2         = 5;
    607
    608  /** Java VM opcode.
    609   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    610   * Opcode definitions in The Java Virtual Machine Specification</a> */
    611  public static final short ICONST_3         = 6;
    612
    613  /** Java VM opcode.
    614   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    615   * Opcode definitions in The Java Virtual Machine Specification</a> */
    616  public static final short ICONST_4         = 7;
    617
    618  /** Java VM opcode.
    619   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    620   * Opcode definitions in The Java Virtual Machine Specification</a> */
    621  public static final short ICONST_5         = 8;
    622
    623  /** Java VM opcode.
    624   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l">
    625   * Opcode definitions in The Java Virtual Machine Specification</a> */
    626  public static final short LCONST_0         = 9;
    627
    628  /** Java VM opcode.
    629   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l">
    630   * Opcode definitions in The Java Virtual Machine Specification</a> */
    631  public static final short LCONST_1         = 10;
    632
    633  /** Java VM opcode.
    634   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f">
    635   * Opcode definitions in The Java Virtual Machine Specification</a> */
    636  public static final short FCONST_0         = 11;
    637
    638  /** Java VM opcode.
    639   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f">
    640   * Opcode definitions in The Java Virtual Machine Specification</a> */
    641  public static final short FCONST_1         = 12;
    642
    643  /** Java VM opcode.
    644   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f">
    645   * Opcode definitions in The Java Virtual Machine Specification</a> */
    646  public static final short FCONST_2         = 13;
    647
    648  /** Java VM opcode.
    649   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d">
    650   * Opcode definitions in The Java Virtual Machine Specification</a> */
    651  public static final short DCONST_0         = 14;
    652
    653  /** Java VM opcode.
    654   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d">
    655   * Opcode definitions in The Java Virtual Machine Specification</a> */
    656  public static final short DCONST_1         = 15;
    657
    658  /** Java VM opcode.
    659   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bipush">
    660   * Opcode definitions in The Java Virtual Machine Specification</a> */
    661  public static final short BIPUSH           = 16;
    662
    663  /** Java VM opcode.
    664   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sipush">
    665   * Opcode definitions in The Java Virtual Machine Specification</a> */
    666  public static final short SIPUSH           = 17;
    667
    668  /** Java VM opcode.
    669   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc">
    670   * Opcode definitions in The Java Virtual Machine Specification</a> */
    671  public static final short LDC              = 18;
    672
    673  /** Java VM opcode.
    674   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc_w">
    675   * Opcode definitions in The Java Virtual Machine Specification</a> */
    676  public static final short LDC_W            = 19;
    677
    678  /** Java VM opcode.
    679   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc2_w">
    680   * Opcode definitions in The Java Virtual Machine Specification</a> */
    681  public static final short LDC2_W           = 20;
    682
    683  /** Java VM opcode.
    684   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload">
    685   * Opcode definitions in The Java Virtual Machine Specification</a> */
    686  public static final short ILOAD            = 21;
    687
    688  /** Java VM opcode.
    689   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload">
    690   * Opcode definitions in The Java Virtual Machine Specification</a> */
    691  public static final short LLOAD            = 22;
    692
    693  /** Java VM opcode.
    694   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload">
    695   * Opcode definitions in The Java Virtual Machine Specification</a> */
    696  public static final short FLOAD            = 23;
    697
    698  /** Java VM opcode.
    699   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload">
    700   * Opcode definitions in The Java Virtual Machine Specification</a> */
    701  public static final short DLOAD            = 24;
    702
    703  /** Java VM opcode.
    704   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload">
    705   * Opcode definitions in The Java Virtual Machine Specification</a> */
    706  public static final short ALOAD            = 25;
    707
    708  /** Java VM opcode.
    709   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n">
    710   * Opcode definitions in The Java Virtual Machine Specification</a> */
    711  public static final short ILOAD_0          = 26;
    712
    713  /** Java VM opcode.
    714   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n">
    715   * Opcode definitions in The Java Virtual Machine Specification</a> */
    716  public static final short ILOAD_1          = 27;
    717
    718  /** Java VM opcode.
    719   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n">
    720   * Opcode definitions in The Java Virtual Machine Specification</a> */
    721  public static final short ILOAD_2          = 28;
    722
    723  /** Java VM opcode.
    724   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n">
    725   * Opcode definitions in The Java Virtual Machine Specification</a> */
    726  public static final short ILOAD_3          = 29;
    727
    728  /** Java VM opcode.
    729   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n">
    730   * Opcode definitions in The Java Virtual Machine Specification</a> */
    731  public static final short LLOAD_0          = 30;
    732
    733  /** Java VM opcode.
    734   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n">
    735   * Opcode definitions in The Java Virtual Machine Specification</a> */
    736  public static final short LLOAD_1          = 31;
    737
    738  /** Java VM opcode.
    739   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n">
    740   * Opcode definitions in The Java Virtual Machine Specification</a> */
    741  public static final short LLOAD_2          = 32;
    742
    743  /** Java VM opcode.
    744   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n">
    745   * Opcode definitions in The Java Virtual Machine Specification</a> */
    746  public static final short LLOAD_3          = 33;
    747
    748  /** Java VM opcode.
    749   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n">
    750   * Opcode definitions in The Java Virtual Machine Specification</a> */
    751  public static final short FLOAD_0          = 34;
    752
    753  /** Java VM opcode.
    754   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n">
    755   * Opcode definitions in The Java Virtual Machine Specification</a> */
    756  public static final short FLOAD_1          = 35;
    757
    758  /** Java VM opcode.
    759   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n">
    760   * Opcode definitions in The Java Virtual Machine Specification</a> */
    761  public static final short FLOAD_2          = 36;
    762
    763  /** Java VM opcode.
    764   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n">
    765   * Opcode definitions in The Java Virtual Machine Specification</a> */
    766  public static final short FLOAD_3          = 37;
    767
    768  /** Java VM opcode.
    769   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n">
    770   * Opcode definitions in The Java Virtual Machine Specification</a> */
    771  public static final short DLOAD_0          = 38;
    772
    773  /** Java VM opcode.
    774   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n">
    775   * Opcode definitions in The Java Virtual Machine Specification</a> */
    776  public static final short DLOAD_1          = 39;
    777
    778  /** Java VM opcode.
    779   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n">
    780   * Opcode definitions in The Java Virtual Machine Specification</a> */
    781  public static final short DLOAD_2          = 40;
    782
    783  /** Java VM opcode.
    784   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n">
    785   * Opcode definitions in The Java Virtual Machine Specification</a> */
    786  public static final short DLOAD_3          = 41;
    787
    788  /** Java VM opcode.
    789   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n">
    790   * Opcode definitions in The Java Virtual Machine Specification</a> */
    791  public static final short ALOAD_0          = 42;
    792
    793  /** Java VM opcode.
    794   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n">
    795   * Opcode definitions in The Java Virtual Machine Specification</a> */
    796  public static final short ALOAD_1          = 43;
    797
    798  /** Java VM opcode.
    799   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n">
    800   * Opcode definitions in The Java Virtual Machine Specification</a> */
    801  public static final short ALOAD_2          = 44;
    802
    803  /** Java VM opcode.
    804   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n">
    805   * Opcode definitions in The Java Virtual Machine Specification</a> */
    806  public static final short ALOAD_3          = 45;
    807
    808  /** Java VM opcode.
    809   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iaload">
    810   * Opcode definitions in The Java Virtual Machine Specification</a> */
    811  public static final short IALOAD           = 46;
    812
    813  /** Java VM opcode.
    814   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.laload">
    815   * Opcode definitions in The Java Virtual Machine Specification</a> */
    816  public static final short LALOAD           = 47;
    817
    818  /** Java VM opcode.
    819   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.faload">
    820   * Opcode definitions in The Java Virtual Machine Specification</a> */
    821  public static final short FALOAD           = 48;
    822
    823  /** Java VM opcode.
    824   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.daload">
    825   * Opcode definitions in The Java Virtual Machine Specification</a> */
    826  public static final short DALOAD           = 49;
    827
    828  /** Java VM opcode.
    829   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aaload">
    830   * Opcode definitions in The Java Virtual Machine Specification</a> */
    831  public static final short AALOAD           = 50;
    832
    833  /** Java VM opcode.
    834   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.baload">
    835   * Opcode definitions in The Java Virtual Machine Specification</a> */
    836  public static final short BALOAD           = 51;
    837
    838  /** Java VM opcode.
    839   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.caload">
    840   * Opcode definitions in The Java Virtual Machine Specification</a> */
    841  public static final short CALOAD           = 52;
    842
    843  /** Java VM opcode.
    844   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.saload">
    845   * Opcode definitions in The Java Virtual Machine Specification</a> */
    846  public static final short SALOAD           = 53;
    847
    848  /** Java VM opcode.
    849   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore">
    850   * Opcode definitions in The Java Virtual Machine Specification</a> */
    851  public static final short ISTORE           = 54;
    852
    853  /** Java VM opcode.
    854   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore">
    855   * Opcode definitions in The Java Virtual Machine Specification</a> */
    856  public static final short LSTORE           = 55;
    857
    858  /** Java VM opcode.
    859   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore">
    860   * Opcode definitions in The Java Virtual Machine Specification</a> */
    861  public static final short FSTORE           = 56;
    862
    863  /** Java VM opcode.
    864   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore">
    865   * Opcode definitions in The Java Virtual Machine Specification</a> */
    866  public static final short DSTORE           = 57;
    867
    868  /** Java VM opcode.
    869   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore">
    870   * Opcode definitions in The Java Virtual Machine Specification</a> */
    871  public static final short ASTORE           = 58;
    872
    873  /** Java VM opcode.
    874   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n">
    875   * Opcode definitions in The Java Virtual Machine Specification</a> */
    876  public static final short ISTORE_0         = 59;
    877
    878  /** Java VM opcode.
    879   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n">
    880   * Opcode definitions in The Java Virtual Machine Specification</a> */
    881  public static final short ISTORE_1         = 60;
    882
    883  /** Java VM opcode.
    884   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n">
    885   * Opcode definitions in The Java Virtual Machine Specification</a> */
    886  public static final short ISTORE_2         = 61;
    887
    888  /** Java VM opcode.
    889   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n">
    890   * Opcode definitions in The Java Virtual Machine Specification</a> */
    891  public static final short ISTORE_3         = 62;
    892
    893  /** Java VM opcode.
    894   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n">
    895   * Opcode definitions in The Java Virtual Machine Specification</a> */
    896  public static final short LSTORE_0         = 63;
    897
    898  /** Java VM opcode.
    899   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n">
    900   * Opcode definitions in The Java Virtual Machine Specification</a> */
    901  public static final short LSTORE_1         = 64;
    902
    903  /** Java VM opcode.
    904   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n">
    905   * Opcode definitions in The Java Virtual Machine Specification</a> */
    906  public static final short LSTORE_2         = 65;
    907
    908  /** Java VM opcode.
    909   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n">
    910   * Opcode definitions in The Java Virtual Machine Specification</a> */
    911  public static final short LSTORE_3         = 66;
    912
    913  /** Java VM opcode.
    914   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n">
    915   * Opcode definitions in The Java Virtual Machine Specification</a> */
    916  public static final short FSTORE_0         = 67;
    917
    918  /** Java VM opcode.
    919   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n">
    920   * Opcode definitions in The Java Virtual Machine Specification</a> */
    921  public static final short FSTORE_1         = 68;
    922
    923  /** Java VM opcode.
    924   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n">
    925   * Opcode definitions in The Java Virtual Machine Specification</a> */
    926  public static final short FSTORE_2         = 69;
    927
    928  /** Java VM opcode.
    929   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n">
    930   * Opcode definitions in The Java Virtual Machine Specification</a> */
    931  public static final short FSTORE_3         = 70;
    932
    933  /** Java VM opcode.
    934   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n">
    935   * Opcode definitions in The Java Virtual Machine Specification</a> */
    936  public static final short DSTORE_0         = 71;
    937
    938  /** Java VM opcode.
    939   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n">
    940   * Opcode definitions in The Java Virtual Machine Specification</a> */
    941  public static final short DSTORE_1         = 72;
    942
    943  /** Java VM opcode.
    944   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n">
    945   * Opcode definitions in The Java Virtual Machine Specification</a> */
    946  public static final short DSTORE_2         = 73;
    947
    948  /** Java VM opcode.
    949   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n">
    950   * Opcode definitions in The Java Virtual Machine Specification</a> */
    951  public static final short DSTORE_3         = 74;
    952
    953  /** Java VM opcode.
    954   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n">
    955   * Opcode definitions in The Java Virtual Machine Specification</a> */
    956  public static final short ASTORE_0         = 75;
    957
    958  /** Java VM opcode.
    959   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n">
    960   * Opcode definitions in The Java Virtual Machine Specification</a> */
    961  public static final short ASTORE_1         = 76;
    962
    963  /** Java VM opcode.
    964   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n">
    965   * Opcode definitions in The Java Virtual Machine Specification</a> */
    966  public static final short ASTORE_2         = 77;
    967
    968  /** Java VM opcode.
    969   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n">
    970   * Opcode definitions in The Java Virtual Machine Specification</a> */
    971  public static final short ASTORE_3         = 78;
    972
    973  /** Java VM opcode.
    974   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iastore">
    975   * Opcode definitions in The Java Virtual Machine Specification</a> */
    976  public static final short IASTORE          = 79;
    977
    978  /** Java VM opcode.
    979   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lastore">
    980   * Opcode definitions in The Java Virtual Machine Specification</a> */
    981  public static final short LASTORE          = 80;
    982
    983  /** Java VM opcode.
    984   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fastore">
    985   * Opcode definitions in The Java Virtual Machine Specification</a> */
    986  public static final short FASTORE          = 81;
    987
    988  /** Java VM opcode.
    989   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dastore">
    990   * Opcode definitions in The Java Virtual Machine Specification</a> */
    991  public static final short DASTORE          = 82;
    992
    993  /** Java VM opcode.
    994   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aastore">
    995   * Opcode definitions in The Java Virtual Machine Specification</a> */
    996  public static final short AASTORE          = 83;
    997
    998  /** Java VM opcode.
    999   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bastore">
    1000   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1001  public static final short BASTORE          = 84;
    1002
    1003  /** Java VM opcode.
    1004   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.castore">
    1005   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1006  public static final short CASTORE          = 85;
    1007
    1008  /** Java VM opcode.
    1009   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sastore">
    1010   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1011  public static final short SASTORE          = 86;
    1012
    1013  /** Java VM opcode.
    1014   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop">
    1015   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1016  public static final short POP              = 87;
    1017
    1018  /** Java VM opcode.
    1019   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop2">
    1020   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1021  public static final short POP2             = 88;
    1022
    1023  /** Java VM opcode.
    1024   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup">
    1025   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1026  public static final short DUP              = 89;
    1027
    1028  /** Java VM opcode.
    1029   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x1">
    1030   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1031  public static final short DUP_X1           = 90;
    1032
    1033  /** Java VM opcode.
    1034   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x2">
    1035   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1036  public static final short DUP_X2           = 91;
    1037
    1038  /** Java VM opcode.
    1039   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2">
    1040   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1041  public static final short DUP2             = 92;
    1042
    1043  /** Java VM opcode.
    1044   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x1">
    1045   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1046  public static final short DUP2_X1          = 93;
    1047
    1048  /** Java VM opcode.
    1049   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x2">
    1050   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1051  public static final short DUP2_X2          = 94;
    1052
    1053  /** Java VM opcode.
    1054   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.swap">
    1055   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1056  public static final short SWAP             = 95;
    1057
    1058  /** Java VM opcode.
    1059   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iadd">
    1060   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1061  public static final short IADD             = 96;
    1062
    1063  /** Java VM opcode.
    1064   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ladd">
    1065   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1066  public static final short LADD             = 97;
    1067
    1068  /** Java VM opcode.
    1069   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fadd">
    1070   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1071  public static final short FADD             = 98;
    1072
    1073  /** Java VM opcode.
    1074   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dadd">
    1075   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1076  public static final short DADD             = 99;
    1077
    1078  /** Java VM opcode.
    1079   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.isub">
    1080   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1081  public static final short ISUB             = 100;
    1082
    1083  /** Java VM opcode.
    1084   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lsub">
    1085   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1086  public static final short LSUB             = 101;
    1087
    1088  /** Java VM opcode.
    1089   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fsub">
    1090   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1091  public static final short FSUB             = 102;
    1092
    1093  /** Java VM opcode.
    1094   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dsub">
    1095   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1096  public static final short DSUB             = 103;
    1097
    1098  /** Java VM opcode.
    1099   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.imul">
    1100   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1101  public static final short IMUL             = 104;
    1102
    1103  /** Java VM opcode.
    1104   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lmul">
    1105   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1106  public static final short LMUL             = 105;
    1107
    1108  /** Java VM opcode.
    1109   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fmul">
    1110   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1111  public static final short FMUL             = 106;
    1112
    1113  /** Java VM opcode.
    1114   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dmul">
    1115   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1116  public static final short DMUL             = 107;
    1117
    1118  /** Java VM opcode.
    1119   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.idiv">
    1120   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1121  public static final short IDIV             = 108;
    1122
    1123  /** Java VM opcode.
    1124   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldiv">
    1125   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1126  public static final short LDIV             = 109;
    1127
    1128  /** Java VM opcode.
    1129   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fdiv">
    1130   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1131  public static final short FDIV             = 110;
    1132
    1133  /** Java VM opcode.
    1134   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ddiv">
    1135   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1136  public static final short DDIV             = 111;
    1137
    1138  /** Java VM opcode.
    1139   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.irem">
    1140   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1141  public static final short IREM             = 112;
    1142
    1143  /** Java VM opcode.
    1144   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lrem">
    1145   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1146  public static final short LREM             = 113;
    1147
    1148  /** Java VM opcode.
    1149   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.frem">
    1150   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1151  public static final short FREM             = 114;
    1152
    1153  /** Java VM opcode.
    1154   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.drem">
    1155   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1156  public static final short DREM             = 115;
    1157
    1158  /** Java VM opcode.
    1159   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ineg">
    1160   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1161  public static final short INEG             = 116;
    1162
    1163  /** Java VM opcode.
    1164   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lneg">
    1165   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1166  public static final short LNEG             = 117;
    1167
    1168  /** Java VM opcode.
    1169   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fneg">
    1170   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1171  public static final short FNEG             = 118;
    1172
    1173  /** Java VM opcode.
    1174   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dneg">
    1175   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1176  public static final short DNEG             = 119;
    1177
    1178  /** Java VM opcode.
    1179   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishl">
    1180   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1181  public static final short ISHL             = 120;
    1182
    1183  /** Java VM opcode.
    1184   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshl">
    1185   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1186  public static final short LSHL             = 121;
    1187
    1188  /** Java VM opcode.
    1189   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishr">
    1190   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1191  public static final short ISHR             = 122;
    1192
    1193  /** Java VM opcode.
    1194   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshr">
    1195   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1196  public static final short LSHR             = 123;
    1197
    1198  /** Java VM opcode.
    1199   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iushr">
    1200   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1201  public static final short IUSHR            = 124;
    1202
    1203  /** Java VM opcode.
    1204   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lushr">
    1205   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1206  public static final short LUSHR            = 125;
    1207
    1208  /** Java VM opcode.
    1209   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iand">
    1210   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1211  public static final short IAND             = 126;
    1212
    1213  /** Java VM opcode.
    1214   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.land">
    1215   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1216  public static final short LAND             = 127;
    1217
    1218  /** Java VM opcode.
    1219   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ior">
    1220   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1221  public static final short IOR              = 128;
    1222
    1223  /** Java VM opcode.
    1224   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lor">
    1225   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1226  public static final short LOR              = 129;
    1227
    1228  /** Java VM opcode.
    1229   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ixor">
    1230   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1231  public static final short IXOR             = 130;
    1232
    1233  /** Java VM opcode.
    1234   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lxor">
    1235   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1236  public static final short LXOR             = 131;
    1237
    1238  /** Java VM opcode.
    1239   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iinc">
    1240   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1241  public static final short IINC             = 132;
    1242
    1243  /** Java VM opcode.
    1244   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2l">
    1245   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1246  public static final short I2L              = 133;
    1247
    1248  /** Java VM opcode.
    1249   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2f">
    1250   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1251  public static final short I2F              = 134;
    1252
    1253  /** Java VM opcode.
    1254   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2d">
    1255   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1256  public static final short I2D              = 135;
    1257
    1258  /** Java VM opcode.
    1259   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2i">
    1260   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1261  public static final short L2I              = 136;
    1262
    1263  /** Java VM opcode.
    1264   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2f">
    1265   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1266  public static final short L2F              = 137;
    1267
    1268  /** Java VM opcode.
    1269   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2d">
    1270   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1271  public static final short L2D              = 138;
    1272
    1273  /** Java VM opcode.
    1274   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2i">
    1275   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1276  public static final short F2I              = 139;
    1277
    1278  /** Java VM opcode.
    1279   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2l">
    1280   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1281  public static final short F2L              = 140;
    1282
    1283  /** Java VM opcode.
    1284   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2d">
    1285   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1286  public static final short F2D              = 141;
    1287
    1288  /** Java VM opcode.
    1289   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2i">
    1290   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1291  public static final short D2I              = 142;
    1292
    1293  /** Java VM opcode.
    1294   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2l">
    1295   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1296  public static final short D2L              = 143;
    1297
    1298  /** Java VM opcode.
    1299   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2f">
    1300   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1301  public static final short D2F              = 144;
    1302
    1303  /** Java VM opcode.
    1304   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2b">
    1305   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1306  public static final short I2B              = 145;
    1307
    1308  /** Java VM opcode.
    1309   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5">
    1310   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1311  public static final short INT2BYTE         = 145; // Old notation
    1312
    1313  /** Java VM opcode.
    1314   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2c">
    1315   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1316  public static final short I2C              = 146;
    1317
    1318  /** Java VM opcode.
    1319   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5">
    1320   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1321  public static final short INT2CHAR         = 146; // Old notation
    1322
    1323  /** Java VM opcode.
    1324   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2s">
    1325   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1326  public static final short I2S              = 147;
    1327
    1328  /** Java VM opcode.
    1329   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5">
    1330   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1331  public static final short INT2SHORT        = 147; // Old notation
    1332
    1333  /** Java VM opcode.
    1334   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lcmp">
    1335   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1336  public static final short LCMP             = 148;
    1337
    1338  /** Java VM opcode.
    1339   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpl">
    1340   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1341  public static final short FCMPL            = 149;
    1342
    1343  /** Java VM opcode.
    1344   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpg">
    1345   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1346  public static final short FCMPG            = 150;
    1347
    1348  /** Java VM opcode.
    1349   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpl">
    1350   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1351  public static final short DCMPL            = 151;
    1352
    1353  /** Java VM opcode.
    1354   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpg">
    1355   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1356  public static final short DCMPG            = 152;
    1357
    1358  /** Java VM opcode.
    1359   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifeq">
    1360   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1361  public static final short IFEQ             = 153;
    1362
    1363  /** Java VM opcode.
    1364   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifne">
    1365   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1366  public static final short IFNE             = 154;
    1367
    1368  /** Java VM opcode.
    1369   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iflt">
    1370   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1371  public static final short IFLT             = 155;
    1372
    1373  /** Java VM opcode.
    1374   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifge">
    1375   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1376  public static final short IFGE             = 156;
    1377
    1378  /** Java VM opcode.
    1379   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifgt">
    1380   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1381  public static final short IFGT             = 157;
    1382
    1383  /** Java VM opcode.
    1384   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifle">
    1385   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1386  public static final short IFLE             = 158;
    1387
    1388  /** Java VM opcode.
    1389   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1390   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1391  public static final short IF_ICMPEQ        = 159;
    1392
    1393  /** Java VM opcode.
    1394   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1395   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1396  public static final short IF_ICMPNE        = 160;
    1397
    1398  /** Java VM opcode.
    1399   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1400   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1401  public static final short IF_ICMPLT        = 161;
    1402
    1403  /** Java VM opcode.
    1404   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1405   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1406  public static final short IF_ICMPGE        = 162;
    1407
    1408  /** Java VM opcode.
    1409   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1410   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1411  public static final short IF_ICMPGT        = 163;
    1412
    1413  /** Java VM opcode.
    1414   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1415   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1416  public static final short IF_ICMPLE        = 164;
    1417
    1418  /** Java VM opcode.
    1419   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond">
    1420   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1421  public static final short IF_ACMPEQ        = 165;
    1422
    1423  /** Java VM opcode.
    1424   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond">
    1425   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1426  public static final short IF_ACMPNE        = 166;
    1427
    1428  /** Java VM opcode.
    1429   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto">
    1430   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1431  public static final short GOTO             = 167;
    1432
    1433  /** Java VM opcode.
    1434   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr">
    1435   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1436  public static final short JSR              = 168;
    1437
    1438  /** Java VM opcode.
    1439   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ret">
    1440   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1441  public static final short RET              = 169;
    1442
    1443  /** Java VM opcode.
    1444   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.tableswitch">
    1445   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1446  public static final short TABLESWITCH      = 170;
    1447
    1448  /** Java VM opcode.
    1449   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lookupswitch">
    1450   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1451  public static final short LOOKUPSWITCH     = 171;
    1452
    1453  /** Java VM opcode.
    1454   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ireturn">
    1455   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1456  public static final short IRETURN          = 172;
    1457
    1458  /** Java VM opcode.
    1459   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lreturn">
    1460   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1461  public static final short LRETURN          = 173;
    1462
    1463  /** Java VM opcode.
    1464   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.freturn">
    1465   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1466  public static final short FRETURN          = 174;
    1467
    1468  /** Java VM opcode.
    1469   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dreturn">
    1470   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1471  public static final short DRETURN          = 175;
    1472
    1473  /** Java VM opcode.
    1474   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.areturn">
    1475   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1476  public static final short ARETURN          = 176;
    1477
    1478  /** Java VM opcode.
    1479   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.return">
    1480   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1481  public static final short RETURN           = 177;
    1482
    1483  /** Java VM opcode.
    1484   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getstatic">
    1485   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1486  public static final short GETSTATIC        = 178;
    1487
    1488  /** Java VM opcode.
    1489   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putstatic">
    1490   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1491  public static final short PUTSTATIC        = 179;
    1492
    1493  /** Java VM opcode.
    1494   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getfield">
    1495   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1496  public static final short GETFIELD         = 180;
    1497
    1498  /** Java VM opcode.
    1499   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putfield">
    1500   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1501  public static final short PUTFIELD         = 181;
    1502
    1503  /** Java VM opcode.
    1504   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokevirtual">
    1505   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1506  public static final short INVOKEVIRTUAL    = 182;
    1507
    1508  /** Java VM opcode.
    1509   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokespecial">
    1510   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1511  public static final short INVOKESPECIAL    = 183;
    1512
    1513  /** Java VM opcode.
    1514   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5">
    1515   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1516  public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0
    1517
    1518  /** Java VM opcode.
    1519   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokestatic">
    1520   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1521  public static final short INVOKESTATIC     = 184;
    1522
    1523  /** Java VM opcode.
    1524   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface">
    1525   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1526  public static final short INVOKEINTERFACE  = 185;
    1527
    1528  /** Java VM opcode.
    1529   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokedynamic">
    1530   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1531  public static final short INVOKEDYNAMIC    = 186;
    1532
    1533  /** Java VM opcode.
    1534   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.new">
    1535   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1536  public static final short NEW              = 187;
    1537
    1538  /** Java VM opcode.
    1539   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.newarray">
    1540   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1541  public static final short NEWARRAY         = 188;
    1542
    1543  /** Java VM opcode.
    1544   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.anewarray">
    1545   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1546  public static final short ANEWARRAY        = 189;
    1547
    1548  /** Java VM opcode.
    1549   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.arraylength">
    1550   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1551  public static final short ARRAYLENGTH      = 190;
    1552
    1553  /** Java VM opcode.
    1554   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.athrow">
    1555   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1556  public static final short ATHROW           = 191;
    1557
    1558  /** Java VM opcode.
    1559   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.checkcast">
    1560   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1561  public static final short CHECKCAST        = 192;
    1562
    1563  /** Java VM opcode.
    1564   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.instanceof">
    1565   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1566  public static final short INSTANCEOF       = 193;
    1567
    1568  /** Java VM opcode.
    1569   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorenter">
    1570   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1571  public static final short MONITORENTER     = 194;
    1572
    1573  /** Java VM opcode.
    1574   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorexit">
    1575   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1576  public static final short MONITOREXIT      = 195;
    1577
    1578  /** Java VM opcode.
    1579   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.wide">
    1580   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1581  public static final short WIDE             = 196;
    1582
    1583  /** Java VM opcode.
    1584   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.multianewarray">
    1585   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1586  public static final short MULTIANEWARRAY   = 197;
    1587
    1588  /** Java VM opcode.
    1589   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnull">
    1590   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1591  public static final short IFNULL           = 198;
    1592
    1593  /** Java VM opcode.
    1594   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnonnull">
    1595   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1596  public static final short IFNONNULL        = 199;
    1597
    1598  /** Java VM opcode.
    1599   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto_w">
    1600   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1601  public static final short GOTO_W           = 200;
    1602
    1603  /** Java VM opcode.
    1604   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr_w">
    1605   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1606  public static final short JSR_W            = 201;
    1607
    1608  /** JVM internal opcode.
    1609   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2">
    1610   * Reserved opcodes in the Java Virtual Machine Specification</a> */
    1611  public static final short BREAKPOINT                = 202;
    1612
    1613  /** JVM internal opcode.
    1614   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1615   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1616   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1617   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1618  public static final short LDC_QUICK                 = 203;
    1619
    1620  /** JVM internal opcode.
    1621   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1622   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1623   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1624   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1625  public static final short LDC_W_QUICK               = 204;
    1626
    1627  /** JVM internal opcode.
    1628   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1629   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1630   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1631   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1632  public static final short LDC2_W_QUICK              = 205;
    1633
    1634  /** JVM internal opcode.
    1635   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1636   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1637   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1638   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1639  public static final short GETFIELD_QUICK            = 206;
    1640
    1641  /** JVM internal opcode.
    1642   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1643   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1644   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1645   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1646  public static final short PUTFIELD_QUICK            = 207;
    1647
    1648  /** JVM internal opcode.
    1649   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1650   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1651   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1652   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1653  public static final short GETFIELD2_QUICK           = 208;
    1654
    1655  /** JVM internal opcode.
    1656   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1657   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1658   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1659   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1660  public static final short PUTFIELD2_QUICK           = 209;
    1661
    1662  /** JVM internal opcode.
    1663   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1664   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1665   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1666   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1667  public static final short GETSTATIC_QUICK           = 210;
    1668
    1669  /** JVM internal opcode.
    1670   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1671   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1672   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1673   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1674  public static final short PUTSTATIC_QUICK           = 211;
    1675
    1676  /** JVM internal opcode.
    1677   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1678   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1679   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1680   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1681  public static final short GETSTATIC2_QUICK          = 212;
    1682
    1683  /** JVM internal opcode.
    1684   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1685   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1686   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1687   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1688  public static final short PUTSTATIC2_QUICK          = 213;
    1689
    1690  /** JVM internal opcode.
    1691   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1692   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1693   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1694   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1695  public static final short INVOKEVIRTUAL_QUICK       = 214;
    1696
    1697  /** JVM internal opcode.
    1698   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1699   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1700   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1701   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1702  public static final short INVOKENONVIRTUAL_QUICK    = 215;
    1703
    1704  /** JVM internal opcode.
    1705   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1706   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1707   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1708   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1709  public static final short INVOKESUPER_QUICK         = 216;
    1710
    1711  /** JVM internal opcode.
    1712   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1713   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1714   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1715   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1716  public static final short INVOKESTATIC_QUICK        = 217;
    1717
    1718  /** JVM internal opcode.
    1719   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1720   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1721   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1722   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1723  public static final short INVOKEINTERFACE_QUICK     = 218;
    1724
    1725  /** JVM internal opcode.
    1726   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1727   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1728   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1729   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1730  public static final short INVOKEVIRTUALOBJECT_QUICK = 219;
    1731
    1732  /** JVM internal opcode.
    1733   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1734   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1735   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1736   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1737  public static final short NEW_QUICK                 = 221;
    1738
    1739  /** JVM internal opcode.
    1740   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1741   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1742   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1743   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1744  public static final short ANEWARRAY_QUICK           = 222;
    1745
    1746  /** JVM internal opcode.
    1747   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1748   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1749   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1750   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1751  public static final short MULTIANEWARRAY_QUICK      = 223;
    1752
    1753  /** JVM internal opcode.
    1754   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1755   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1756   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1757   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1758  public static final short CHECKCAST_QUICK           = 224;
    1759
    1760  /** JVM internal opcode.
    1761   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1762   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1763   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1764   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1765  public static final short INSTANCEOF_QUICK          = 225;
    1766
    1767  /** JVM internal opcode.
    1768   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1769   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1770   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1771   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1772  public static final short INVOKEVIRTUAL_QUICK_W     = 226;
    1773
    1774  /** JVM internal opcode.
    1775   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1776   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1777   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1778   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1779  public static final short GETFIELD_QUICK_W          = 227;
    1780
    1781  /** JVM internal opcode.
    1782   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1783   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1784   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1785   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1786  public static final short PUTFIELD_QUICK_W          = 228;
    1787
    1788  /** JVM internal opcode.
    1789   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2">
    1790   * Reserved opcodes in the Java Virtual Machine Specification</a> */
    1791  public static final short IMPDEP1                   = 254;
    1792
    1793  /** JVM internal opcode.
    1794   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2">
    1795   * Reserved opcodes in the Java Virtual Machine Specification</a> */
    1796  public static final short IMPDEP2                   = 255;
    1797
    1798  /**
    1799   * BCEL virtual instruction for pushing an arbitrary data type onto the stack.  Will be converted to the appropriate JVM
    1800   * opcode when the class is dumped.
    1801   */
    1802  public static final short PUSH             = 4711;
    1803
    1804  /**
    1805   * BCEL virtual instruction for either LOOKUPSWITCH or TABLESWITCH.  Will be converted to the appropriate JVM
    1806   * opcode when the class is dumped.
    1807   */
    1808  public static final short SWITCH           = 4712;
    1809
    1810  /** Illegal opcode. */
    1811  public static final short  UNDEFINED      = -1;
    1812
    1813  /** Illegal opcode. */
    1814  public static final short  UNPREDICTABLE  = -2;
    1815
    1816  /** Illegal opcode. */
    1817  public static final short  RESERVED       = -3;
    1818
    1819  /** Mnemonic for an illegal opcode. */
    1820  public static final String ILLEGAL_OPCODE = "<illegal opcode>";
    1821
    1822  /** Mnemonic for an illegal type. */
    1823  public static final String ILLEGAL_TYPE   = "<illegal type>";
    1824
    1825  /** Boolean data type.
    1826   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1827   * Static Constraints in the Java Virtual Machine Specification</a> */
    1828  public static final byte T_BOOLEAN = 4;
    1829
    1830  /** Char data type.
    1831   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1832   * Static Constraints in the Java Virtual Machine Specification</a> */
    1833  public static final byte T_CHAR    = 5;
    1834
    1835  /** Float data type.
    1836   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1837   * Static Constraints in the Java Virtual Machine Specification</a> */
    1838  public static final byte T_FLOAT   = 6;
    1839
    1840  /** Double data type.
    1841   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1842   * Static Constraints in the Java Virtual Machine Specification</a> */
    1843  public static final byte T_DOUBLE  = 7;
    1844
    1845  /** Byte data type.
    1846   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1847   * Static Constraints in the Java Virtual Machine Specification</a> */
    1848  public static final byte T_BYTE    = 8;
    1849
    1850  /** Short data type.
    1851   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1852   * Static Constraints in the Java Virtual Machine Specification</a> */
    1853  public static final byte T_SHORT   = 9;
    1854
    1855  /** Int data type.
    1856   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1857   * Static Constraints in the Java Virtual Machine Specification</a> */
    1858  public static final byte T_INT     = 10;
    1859
    1860  /** Long data type.
    1861   * @see <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1862   * Static Constraints in the Java Virtual Machine Specification</a> */
    1863  public static final byte T_LONG    = 11;
    1864
    1865  /** Void data type (non-standard). */
    1866  public static final byte T_VOID      = 12; // Non-standard
    1867
    1868  /** Array data type. */
    1869  public static final byte T_ARRAY     = 13;
    1870
    1871  /** Object data type. */
    1872  public static final byte T_OBJECT    = 14;
    1873
    1874  /** Reference data type (deprecated). */
    1875  public static final byte T_REFERENCE = 14; // Deprecated
    1876
    1877  /** Unknown data type. */
    1878  public static final byte T_UNKNOWN   = 15;
    1879
    1880  /** Address data type. */
    1881  public static final byte T_ADDRESS   = 16;
    1882
    1883  /** The primitive type names corresponding to the T_XX constants,
    1884   * e.g., TYPE_NAMES[T_INT] = "int"
    1885   */
    1886  private static final String[] TYPE_NAMES = {
    1887    ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE, ILLEGAL_TYPE,
    1888    "boolean", "char", "float", "double", "byte", "short", "int", "long",
    1889    "void", "array", "object", "unknown", "address"
    1890  };
    1891
    1892  /**
    1893   * The primitive type names corresponding to the T_XX constants,
    1894   * e.g., TYPE_NAMES[T_INT] = "int"
    1895   * @param index
    1896   * @return the type name
    1897   * @since 6.0
    1898   */
    1899  public static String getTypeName(final int index) {
    1900      return TYPE_NAMES[index];
    1901  }
    1902
    1903  /** The primitive class names corresponding to the T_XX constants,
    1904   * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
    1905   */
    1906  private static final String[] CLASS_TYPE_NAMES = {
    1907    ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE, ILLEGAL_TYPE,
    1908    "java.lang.Boolean", "java.lang.Character", "java.lang.Float",
    1909    "java.lang.Double", "java.lang.Byte", "java.lang.Short",
    1910    "java.lang.Integer", "java.lang.Long", "java.lang.Void",
    1911    ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE,  ILLEGAL_TYPE
    1912  };
    1913
    1914  /**
    1915   * The primitive class names corresponding to the T_XX constants,
    1916   * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
    1917   * @param index
    1918   * @return the class name
    1919   * @since 6.0
    1920   */
    1921  public static String getClassTypeName(final int index) {
    1922      return CLASS_TYPE_NAMES[index];
    1923  }
    1924
    1925  /** The signature characters corresponding to primitive types,
    1926   * e.g., SHORT_TYPE_NAMES[T_INT] = "I"
    1927   */
    1928  private static final String[] SHORT_TYPE_NAMES = {
    1929    ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE, ILLEGAL_TYPE,
    1930    "Z", "C", "F", "D", "B", "S", "I", "J",
    1931    "V", ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE
    1932  };
    1933
    1934  /**
    1935   *
    1936   * @param index
    1937   * @return the short type name
    1938   * @since 6.0
    1939   */
    1940  public static String getShortTypeName(final int index) {
    1941      return SHORT_TYPE_NAMES[index];
    1942  }
    1943
    1944
    1945  /**
    1946   * Number of byte code operands for each opcode, i.e., number of bytes after the tag byte
    1947   * itself.  Indexed by opcode, so NO_OF_OPERANDS[BIPUSH] = the number of operands for a bipush
    1948   * instruction.
    1949   */
    1950  private static final short[] NO_OF_OPERANDS = {
    1951    0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/,
    1952    0/*iconst_1*/, 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/,
    1953    0/*iconst_5*/, 0/*lconst_0*/, 0/*lconst_1*/, 0/*fconst_0*/,
    1954    0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, 0/*dconst_1*/,
    1955    1/*bipush*/, 2/*sipush*/, 1/*ldc*/, 2/*ldc_w*/, 2/*ldc2_w*/,
    1956    1/*iload*/, 1/*lload*/, 1/*fload*/, 1/*dload*/, 1/*aload*/,
    1957    0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, 0/*iload_3*/,
    1958    0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/,
    1959    0/*fload_0*/, 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/,
    1960    0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, 0/*dload_3*/,
    1961    0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/,
    1962    0/*iaload*/, 0/*laload*/, 0/*faload*/, 0/*daload*/,
    1963    0/*aaload*/, 0/*baload*/, 0/*caload*/, 0/*saload*/,
    1964    1/*istore*/, 1/*lstore*/, 1/*fstore*/, 1/*dstore*/,
    1965    1/*astore*/, 0/*istore_0*/, 0/*istore_1*/, 0/*istore_2*/,
    1966    0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, 0/*lstore_2*/,
    1967    0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/,
    1968    0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/,
    1969    0/*dstore_3*/, 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/,
    1970    0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, 0/*fastore*/,
    1971    0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/,
    1972    0/*sastore*/, 0/*pop*/, 0/*pop2*/, 0/*dup*/, 0/*dup_x1*/,
    1973    0/*dup_x2*/, 0/*dup2*/, 0/*dup2_x1*/, 0/*dup2_x2*/, 0/*swap*/,
    1974    0/*iadd*/, 0/*ladd*/, 0/*fadd*/, 0/*dadd*/, 0/*isub*/,
    1975    0/*lsub*/, 0/*fsub*/, 0/*dsub*/, 0/*imul*/, 0/*lmul*/,
    1976    0/*fmul*/, 0/*dmul*/, 0/*idiv*/, 0/*ldiv*/, 0/*fdiv*/,
    1977    0/*ddiv*/, 0/*irem*/, 0/*lrem*/, 0/*frem*/, 0/*drem*/,
    1978    0/*ineg*/, 0/*lneg*/, 0/*fneg*/, 0/*dneg*/, 0/*ishl*/,
    1979    0/*lshl*/, 0/*ishr*/, 0/*lshr*/, 0/*iushr*/, 0/*lushr*/,
    1980    0/*iand*/, 0/*land*/, 0/*ior*/, 0/*lor*/, 0/*ixor*/, 0/*lxor*/,
    1981    2/*iinc*/, 0/*i2l*/, 0/*i2f*/, 0/*i2d*/, 0/*l2i*/, 0/*l2f*/,
    1982    0/*l2d*/, 0/*f2i*/, 0/*f2l*/, 0/*f2d*/, 0/*d2i*/, 0/*d2l*/,
    1983    0/*d2f*/, 0/*i2b*/, 0/*i2c*/, 0/*i2s*/, 0/*lcmp*/, 0/*fcmpl*/,
    1984    0/*fcmpg*/, 0/*dcmpl*/, 0/*dcmpg*/, 2/*ifeq*/, 2/*ifne*/,
    1985    2/*iflt*/, 2/*ifge*/, 2/*ifgt*/, 2/*ifle*/, 2/*if_icmpeq*/,
    1986    2/*if_icmpne*/, 2/*if_icmplt*/, 2/*if_icmpge*/, 2/*if_icmpgt*/,
    1987    2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, 2/*goto*/,
    1988    2/*jsr*/, 1/*ret*/, UNPREDICTABLE/*tableswitch*/, UNPREDICTABLE/*lookupswitch*/,
    1989    0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/,
    1990    0/*dreturn*/, 0/*areturn*/, 0/*return*/,
    1991    2/*getstatic*/, 2/*putstatic*/, 2/*getfield*/,
    1992    2/*putfield*/, 2/*invokevirtual*/, 2/*invokespecial*/, 2/*invokestatic*/,
    1993    4/*invokeinterface*/, 4/*invokedynamic*/, 2/*new*/,
    1994    1/*newarray*/, 2/*anewarray*/,
    1995    0/*arraylength*/, 0/*athrow*/, 2/*checkcast*/,
    1996    2/*instanceof*/, 0/*monitorenter*/,
    1997    0/*monitorexit*/, UNPREDICTABLE/*wide*/, 3/*multianewarray*/,
    1998    2/*ifnull*/, 2/*ifnonnull*/, 4/*goto_w*/,
    1999    4/*jsr_w*/, 0/*breakpoint*/, UNDEFINED,
    2000    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2001    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2002    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2003    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2004    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2005    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2006    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2007    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2008    UNDEFINED, UNDEFINED, RESERVED/*impdep1*/, RESERVED/*impdep2*/
    2009  };
    2010
    2011  /**
    2012   *
    2013   * @param index
    2014   * @return Number of byte code operands
    2015   * @since 6.0
    2016   */
    2017  public static short getNoOfOperands(final int index) {
    2018      return NO_OF_OPERANDS[index];
    2019  }
    2020
    2021  /**
    2022   * How the byte code operands are to be interpreted for each opcode.
    2023   * Indexed by opcode.  TYPE_OF_OPERANDS[ILOAD] = an array of shorts
    2024   * describing the data types for the instruction.
    2025   */
    2026  private static final short[][] TYPE_OF_OPERANDS = {
    2027    {}/*nop*/, {}/*aconst_null*/, {}/*iconst_m1*/, {}/*iconst_0*/,
    2028    {}/*iconst_1*/, {}/*iconst_2*/, {}/*iconst_3*/, {}/*iconst_4*/,
    2029    {}/*iconst_5*/, {}/*lconst_0*/, {}/*lconst_1*/, {}/*fconst_0*/,
    2030    {}/*fconst_1*/, {}/*fconst_2*/, {}/*dconst_0*/, {}/*dconst_1*/,
    2031    {T_BYTE}/*bipush*/, {T_SHORT}/*sipush*/, {T_BYTE}/*ldc*/,
    2032    {T_SHORT}/*ldc_w*/, {T_SHORT}/*ldc2_w*/,
    2033    {T_BYTE}/*iload*/, {T_BYTE}/*lload*/, {T_BYTE}/*fload*/,
    2034    {T_BYTE}/*dload*/, {T_BYTE}/*aload*/, {}/*iload_0*/,
    2035    {}/*iload_1*/, {}/*iload_2*/, {}/*iload_3*/, {}/*lload_0*/,
    2036    {}/*lload_1*/, {}/*lload_2*/, {}/*lload_3*/, {}/*fload_0*/,
    2037    {}/*fload_1*/, {}/*fload_2*/, {}/*fload_3*/, {}/*dload_0*/,
    2038    {}/*dload_1*/, {}/*dload_2*/, {}/*dload_3*/, {}/*aload_0*/,
    2039    {}/*aload_1*/, {}/*aload_2*/, {}/*aload_3*/, {}/*iaload*/,
    2040    {}/*laload*/, {}/*faload*/, {}/*daload*/, {}/*aaload*/,
    2041    {}/*baload*/, {}/*caload*/, {}/*saload*/, {T_BYTE}/*istore*/,
    2042    {T_BYTE}/*lstore*/, {T_BYTE}/*fstore*/, {T_BYTE}/*dstore*/,
    2043    {T_BYTE}/*astore*/, {}/*istore_0*/, {}/*istore_1*/,
    2044    {}/*istore_2*/, {}/*istore_3*/, {}/*lstore_0*/, {}/*lstore_1*/,
    2045    {}/*lstore_2*/, {}/*lstore_3*/, {}/*fstore_0*/, {}/*fstore_1*/,
    2046    {}/*fstore_2*/, {}/*fstore_3*/, {}/*dstore_0*/, {}/*dstore_1*/,
    2047    {}/*dstore_2*/, {}/*dstore_3*/, {}/*astore_0*/, {}/*astore_1*/,
    2048    {}/*astore_2*/, {}/*astore_3*/, {}/*iastore*/, {}/*lastore*/,
    2049    {}/*fastore*/, {}/*dastore*/, {}/*aastore*/, {}/*bastore*/,
    2050    {}/*castore*/, {}/*sastore*/, {}/*pop*/, {}/*pop2*/, {}/*dup*/,
    2051    {}/*dup_x1*/, {}/*dup_x2*/, {}/*dup2*/, {}/*dup2_x1*/,
    2052    {}/*dup2_x2*/, {}/*swap*/, {}/*iadd*/, {}/*ladd*/, {}/*fadd*/,
    2053    {}/*dadd*/, {}/*isub*/, {}/*lsub*/, {}/*fsub*/, {}/*dsub*/,
    2054    {}/*imul*/, {}/*lmul*/, {}/*fmul*/, {}/*dmul*/, {}/*idiv*/,
    2055    {}/*ldiv*/, {}/*fdiv*/, {}/*ddiv*/, {}/*irem*/, {}/*lrem*/,
    2056    {}/*frem*/, {}/*drem*/, {}/*ineg*/, {}/*lneg*/, {}/*fneg*/,
    2057    {}/*dneg*/, {}/*ishl*/, {}/*lshl*/, {}/*ishr*/, {}/*lshr*/,
    2058    {}/*iushr*/, {}/*lushr*/, {}/*iand*/, {}/*land*/, {}/*ior*/,
    2059    {}/*lor*/, {}/*ixor*/, {}/*lxor*/, {T_BYTE, T_BYTE}/*iinc*/,
    2060    {}/*i2l*/, {}/*i2f*/, {}/*i2d*/, {}/*l2i*/, {}/*l2f*/, {}/*l2d*/,
    2061    {}/*f2i*/, {}/*f2l*/, {}/*f2d*/, {}/*d2i*/, {}/*d2l*/, {}/*d2f*/,
    2062    {}/*i2b*/, {}/*i2c*/, {}/*i2s*/, {}/*lcmp*/, {}/*fcmpl*/,
    2063    {}/*fcmpg*/, {}/*dcmpl*/, {}/*dcmpg*/, {T_SHORT}/*ifeq*/,
    2064    {T_SHORT}/*ifne*/, {T_SHORT}/*iflt*/, {T_SHORT}/*ifge*/,
    2065    {T_SHORT}/*ifgt*/, {T_SHORT}/*ifle*/, {T_SHORT}/*if_icmpeq*/,
    2066    {T_SHORT}/*if_icmpne*/, {T_SHORT}/*if_icmplt*/,
    2067    {T_SHORT}/*if_icmpge*/, {T_SHORT}/*if_icmpgt*/,
    2068    {T_SHORT}/*if_icmple*/, {T_SHORT}/*if_acmpeq*/,
    2069    {T_SHORT}/*if_acmpne*/, {T_SHORT}/*goto*/, {T_SHORT}/*jsr*/,
    2070    {T_BYTE}/*ret*/, {}/*tableswitch*/, {}/*lookupswitch*/,
    2071    {}/*ireturn*/, {}/*lreturn*/, {}/*freturn*/, {}/*dreturn*/,
    2072    {}/*areturn*/, {}/*return*/, {T_SHORT}/*getstatic*/,
    2073    {T_SHORT}/*putstatic*/, {T_SHORT}/*getfield*/,
    2074    {T_SHORT}/*putfield*/, {T_SHORT}/*invokevirtual*/,
    2075    {T_SHORT}/*invokespecial*/, {T_SHORT}/*invokestatic*/,
    2076    {T_SHORT, T_BYTE, T_BYTE}/*invokeinterface*/, {T_SHORT, T_BYTE, T_BYTE}/*invokedynamic*/,
    2077    {T_SHORT}/*new*/, {T_BYTE}/*newarray*/,
    2078    {T_SHORT}/*anewarray*/, {}/*arraylength*/, {}/*athrow*/,
    2079    {T_SHORT}/*checkcast*/, {T_SHORT}/*instanceof*/,
    2080    {}/*monitorenter*/, {}/*monitorexit*/, {T_BYTE}/*wide*/,
    2081    {T_SHORT, T_BYTE}/*multianewarray*/, {T_SHORT}/*ifnull*/,
    2082    {T_SHORT}/*ifnonnull*/, {T_INT}/*goto_w*/, {T_INT}/*jsr_w*/,
    2083    {}/*breakpoint*/, {}, {}, {}, {}, {}, {}, {},
    2084    {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
    2085    {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
    2086    {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
    2087    {}/*impdep1*/, {}/*impdep2*/
    2088  };
    2089
    2090  /**
    2091   * @since 6.0
    2092   */
    2093  public static short getOperandType(final int opcode, final int index) {
    2094      return TYPE_OF_OPERANDS[opcode][index];
    2095  }
    2096
    2097  /**
    2098   * @since 6.0
    2099   */
    2100  public static long getOperandTypeCount(final int opcode) {
    2101      return TYPE_OF_OPERANDS[opcode].length;
    2102  }
    2103
    2104  /**
    2105   * Names of opcodes.  Indexed by opcode.  OPCODE_NAMES[ALOAD] = "aload".
    2106   */
    2107  private static final String[] OPCODE_NAMES = {
    2108    "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1",
    2109    "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0",
    2110    "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0",
    2111    "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload",
    2112    "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2",
    2113    "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0",
    2114    "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2",
    2115    "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload",
    2116    "laload", "faload", "daload", "aaload", "baload", "caload", "saload",
    2117    "istore", "lstore", "fstore", "dstore", "astore", "istore_0",
    2118    "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1",
    2119    "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2",
    2120    "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3",
    2121    "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore",
    2122    "fastore", "dastore", "aastore", "bastore", "castore", "sastore",
    2123    "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1",
    2124    "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub",
    2125    "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv",
    2126    "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg",
    2127    "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr",
    2128    "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f",
    2129    "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f",
    2130    "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg",
    2131    "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle",
    2132    "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt",
    2133    "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret",
    2134    "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn",
    2135    "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield",
    2136    "putfield", "invokevirtual", "invokespecial", "invokestatic",
    2137    "invokeinterface", "invokedynamic", "new", "newarray", "anewarray",
    2138    "arraylength", "athrow", "checkcast", "instanceof", "monitorenter",
    2139    "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull",
    2140    "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2141    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2142    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2143    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2144    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2145    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2146    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2147    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2148    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2149    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2150    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2151    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2152    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2153    ILLEGAL_OPCODE, "impdep1", "impdep2"
    2154  };
    2155
    2156  /**
    2157   * @since 6.0
    2158   */
    2159  public static final int OPCODE_NAMES_LENGTH = OPCODE_NAMES.length;
    2160
    2161
    2162  /**
    2163   * @since 6.0
    2164   */
    2165  public static String getOpcodeName(final int index) {
    2166      return OPCODE_NAMES[index];
    2167  }
    2168
    2169  /**
    2170   * Number of words consumed on operand stack by instructions.
    2171   * Indexed by opcode.  CONSUME_STACK[FALOAD] = number of words
    2172   * consumed from the stack by a faload instruction.
    2173   */
    2174  private static final int[] CONSUME_STACK = {
    2175    0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, 0/*iconst_1*/,
    2176    0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, 0/*iconst_5*/, 0/*lconst_0*/,
    2177    0/*lconst_1*/, 0/*fconst_0*/, 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/,
    2178    0/*dconst_1*/, 0/*bipush*/, 0/*sipush*/, 0/*ldc*/, 0/*ldc_w*/, 0/*ldc2_w*/, 0/*iload*/,
    2179    0/*lload*/, 0/*fload*/, 0/*dload*/, 0/*aload*/, 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/,
    2180    0/*iload_3*/, 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, 0/*fload_0*/,
    2181    0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/,
    2182    0/*dload_3*/, 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, 2/*iaload*/,
    2183    2/*laload*/, 2/*faload*/, 2/*daload*/, 2/*aaload*/, 2/*baload*/, 2/*caload*/, 2/*saload*/,
    2184    1/*istore*/, 2/*lstore*/, 1/*fstore*/, 2/*dstore*/, 1/*astore*/, 1/*istore_0*/,
    2185    1/*istore_1*/, 1/*istore_2*/, 1/*istore_3*/, 2/*lstore_0*/, 2/*lstore_1*/,
    2186    2/*lstore_2*/, 2/*lstore_3*/, 1/*fstore_0*/, 1/*fstore_1*/, 1/*fstore_2*/,
    2187    1/*fstore_3*/, 2/*dstore_0*/, 2/*dstore_1*/, 2/*dstore_2*/, 2/*dstore_3*/,
    2188    1/*astore_0*/, 1/*astore_1*/, 1/*astore_2*/, 1/*astore_3*/, 3/*iastore*/, 4/*lastore*/,
    2189    3/*fastore*/, 4/*dastore*/, 3/*aastore*/, 3/*bastore*/, 3/*castore*/, 3/*sastore*/,
    2190    1/*pop*/, 2/*pop2*/, 1/*dup*/, 2/*dup_x1*/, 3/*dup_x2*/, 2/*dup2*/, 3/*dup2_x1*/,
    2191    4/*dup2_x2*/, 2/*swap*/, 2/*iadd*/, 4/*ladd*/, 2/*fadd*/, 4/*dadd*/, 2/*isub*/, 4/*lsub*/,
    2192    2/*fsub*/, 4/*dsub*/, 2/*imul*/, 4/*lmul*/, 2/*fmul*/, 4/*dmul*/, 2/*idiv*/, 4/*ldiv*/,
    2193    2/*fdiv*/, 4/*ddiv*/, 2/*irem*/, 4/*lrem*/, 2/*frem*/, 4/*drem*/, 1/*ineg*/, 2/*lneg*/,
    2194    1/*fneg*/, 2/*dneg*/, 2/*ishl*/, 3/*lshl*/, 2/*ishr*/, 3/*lshr*/, 2/*iushr*/, 3/*lushr*/,
    2195    2/*iand*/, 4/*land*/, 2/*ior*/, 4/*lor*/, 2/*ixor*/, 4/*lxor*/, 0/*iinc*/,
    2196    1/*i2l*/, 1/*i2f*/, 1/*i2d*/, 2/*l2i*/, 2/*l2f*/, 2/*l2d*/, 1/*f2i*/, 1/*f2l*/,
    2197    1/*f2d*/, 2/*d2i*/, 2/*d2l*/, 2/*d2f*/, 1/*i2b*/, 1/*i2c*/, 1/*i2s*/,
    2198    4/*lcmp*/, 2/*fcmpl*/, 2/*fcmpg*/, 4/*dcmpl*/, 4/*dcmpg*/, 1/*ifeq*/, 1/*ifne*/,
    2199    1/*iflt*/, 1/*ifge*/, 1/*ifgt*/, 1/*ifle*/, 2/*if_icmpeq*/, 2/*if_icmpne*/, 2/*if_icmplt*/,
    2200    2 /*if_icmpge*/, 2/*if_icmpgt*/, 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/,
    2201    0/*goto*/, 0/*jsr*/, 0/*ret*/, 1/*tableswitch*/, 1/*lookupswitch*/, 1/*ireturn*/,
    2202    2/*lreturn*/, 1/*freturn*/, 2/*dreturn*/, 1/*areturn*/, 0/*return*/, 0/*getstatic*/,
    2203    UNPREDICTABLE/*putstatic*/, 1/*getfield*/, UNPREDICTABLE/*putfield*/,
    2204    UNPREDICTABLE/*invokevirtual*/, UNPREDICTABLE/*invokespecial*/,
    2205    UNPREDICTABLE/*invokestatic*/,
    2206    UNPREDICTABLE/*invokeinterface*/, UNPREDICTABLE/*invokedynamic*/, 0/*new*/, 1/*newarray*/, 1/*anewarray*/,
    2207    1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 1/*monitorenter*/,
    2208    1/*monitorexit*/, 0/*wide*/, UNPREDICTABLE/*multianewarray*/, 1/*ifnull*/, 1/*ifnonnull*/,
    2209    0/*goto_w*/, 0/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED,
    2210    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2211    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2212    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2213    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2214    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2215    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2216    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2217    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2218    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2219    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2220    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2221    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2222    UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/
    2223  };
    2224
    2225  /**
    2226   *
    2227   * @param index
    2228   * @return Number of words consumed on operand stack
    2229   * @since 6.0
    2230   */
    2231  public static int getConsumeStack(final int index) {
    2232      return CONSUME_STACK[index];
    2233  }
    2234
    2235
    2236  /**
    2237   * Number of words produced onto operand stack by instructions.
    2238   * Indexed by opcode.  CONSUME_STACK[DALOAD] = number of words
    2239   * consumed from the stack by a daload instruction.
    2240   */
    2241  private static final int[] PRODUCE_STACK = {
    2242    0/*nop*/, 1/*aconst_null*/, 1/*iconst_m1*/, 1/*iconst_0*/, 1/*iconst_1*/,
    2243    1/*iconst_2*/, 1/*iconst_3*/, 1/*iconst_4*/, 1/*iconst_5*/, 2/*lconst_0*/,
    2244    2/*lconst_1*/, 1/*fconst_0*/, 1/*fconst_1*/, 1/*fconst_2*/, 2/*dconst_0*/,
    2245    2/*dconst_1*/, 1/*bipush*/, 1/*sipush*/, 1/*ldc*/, 1/*ldc_w*/, 2/*ldc2_w*/, 1/*iload*/,
    2246    2/*lload*/, 1/*fload*/, 2/*dload*/, 1/*aload*/, 1/*iload_0*/, 1/*iload_1*/, 1/*iload_2*/,
    2247    1/*iload_3*/, 2/*lload_0*/, 2/*lload_1*/, 2/*lload_2*/, 2/*lload_3*/, 1/*fload_0*/,
    2248    1/*fload_1*/, 1/*fload_2*/, 1/*fload_3*/, 2/*dload_0*/, 2/*dload_1*/, 2/*dload_2*/,
    2249    2/*dload_3*/, 1/*aload_0*/, 1/*aload_1*/, 1/*aload_2*/, 1/*aload_3*/, 1/*iaload*/,
    2250    2/*laload*/, 1/*faload*/, 2/*daload*/, 1/*aaload*/, 1/*baload*/, 1/*caload*/, 1/*saload*/,
    2251    0/*istore*/, 0/*lstore*/, 0/*fstore*/, 0/*dstore*/, 0/*astore*/, 0/*istore_0*/,
    2252    0/*istore_1*/, 0/*istore_2*/, 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/,
    2253    0/*lstore_2*/, 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/,
    2254    0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, 0/*dstore_3*/,
    2255    0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/,
    2256    0/*fastore*/, 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, 0/*sastore*/,
    2257    0/*pop*/, 0/*pop2*/, 2/*dup*/, 3/*dup_x1*/, 4/*dup_x2*/, 4/*dup2*/, 5/*dup2_x1*/,
    2258    6/*dup2_x2*/, 2/*swap*/, 1/*iadd*/, 2/*ladd*/, 1/*fadd*/, 2/*dadd*/, 1/*isub*/, 2/*lsub*/,
    2259    1/*fsub*/, 2/*dsub*/, 1/*imul*/, 2/*lmul*/, 1/*fmul*/, 2/*dmul*/, 1/*idiv*/, 2/*ldiv*/,
    2260    1/*fdiv*/, 2/*ddiv*/, 1/*irem*/, 2/*lrem*/, 1/*frem*/, 2/*drem*/, 1/*ineg*/, 2/*lneg*/,
    2261    1/*fneg*/, 2/*dneg*/, 1/*ishl*/, 2/*lshl*/, 1/*ishr*/, 2/*lshr*/, 1/*iushr*/, 2/*lushr*/,
    2262    1/*iand*/, 2/*land*/, 1/*ior*/, 2/*lor*/, 1/*ixor*/, 2/*lxor*/,
    2263    0/*iinc*/, 2/*i2l*/, 1/*i2f*/, 2/*i2d*/, 1/*l2i*/, 1/*l2f*/, 2/*l2d*/, 1/*f2i*/,
    2264    2/*f2l*/, 2/*f2d*/, 1/*d2i*/, 2/*d2l*/, 1/*d2f*/,
    2265    1/*i2b*/, 1/*i2c*/, 1/*i2s*/, 1/*lcmp*/, 1/*fcmpl*/, 1/*fcmpg*/,
    2266    1/*dcmpl*/, 1/*dcmpg*/, 0/*ifeq*/, 0/*ifne*/, 0/*iflt*/, 0/*ifge*/, 0/*ifgt*/, 0/*ifle*/,
    2267    0/*if_icmpeq*/, 0/*if_icmpne*/, 0/*if_icmplt*/, 0/*if_icmpge*/, 0/*if_icmpgt*/,
    2268    0/*if_icmple*/, 0/*if_acmpeq*/, 0/*if_acmpne*/, 0/*goto*/, 1/*jsr*/, 0/*ret*/,
    2269    0/*tableswitch*/, 0/*lookupswitch*/, 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/,
    2270    0/*dreturn*/, 0/*areturn*/, 0/*return*/, UNPREDICTABLE/*getstatic*/, 0/*putstatic*/,
    2271    UNPREDICTABLE/*getfield*/, 0/*putfield*/, UNPREDICTABLE/*invokevirtual*/,
    2272    UNPREDICTABLE/*invokespecial*/, UNPREDICTABLE/*invokestatic*/,
    2273    UNPREDICTABLE/*invokeinterface*/, UNPREDICTABLE/*invokedynamic*/, 1/*new*/, 1/*newarray*/, 1/*anewarray*/,
    2274    1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 0/*monitorenter*/,
    2275    0/*monitorexit*/, 0/*wide*/, 1/*multianewarray*/, 0/*ifnull*/, 0/*ifnonnull*/,
    2276    0/*goto_w*/, 1/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED,
    2277    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2278    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2279    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2280    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2281    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2282    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2283    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2284    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2285    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2286    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2287    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2288    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2289    UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/
    2290  };
    2291
    2292  /**
    2293   *
    2294   * @param index
    2295   * @return Number of words produced onto operand stack
    2296   * @since 6.0
    2297   */
    2298  public static int getProduceStack(final int index) {
    2299      return PRODUCE_STACK[index];
    2300  }
    2301
    2302  /** Attributes and their corresponding names.
    2303   */
    2304  public static final byte ATTR_UNKNOWN                                 = -1;
    2305  public static final byte ATTR_SOURCE_FILE                             = 0;
    2306  public static final byte ATTR_CONSTANT_VALUE                          = 1;
    2307  public static final byte ATTR_CODE                                    = 2;
    2308  public static final byte ATTR_EXCEPTIONS                              = 3;
    2309  public static final byte ATTR_LINE_NUMBER_TABLE                       = 4;
    2310  public static final byte ATTR_LOCAL_VARIABLE_TABLE                    = 5;
    2311  public static final byte ATTR_INNER_CLASSES                           = 6;
    2312  public static final byte ATTR_SYNTHETIC                               = 7;
    2313  public static final byte ATTR_DEPRECATED                              = 8;
    2314  public static final byte ATTR_PMG                                     = 9;
    2315  public static final byte ATTR_SIGNATURE                               = 10;
    2316  public static final byte ATTR_STACK_MAP                               = 11;
    2317  public static final byte ATTR_RUNTIME_VISIBLE_ANNOTATIONS             = 12;
    2318  public static final byte ATTR_RUNTIME_INVISIBLE_ANNOTATIONS           = 13;
    2319  public static final byte ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS   = 14;
    2320  public static final byte ATTR_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS = 15;
    2321  public static final byte ATTR_ANNOTATION_DEFAULT                      = 16;
    2322  public static final byte ATTR_LOCAL_VARIABLE_TYPE_TABLE               = 17;
    2323  public static final byte ATTR_ENCLOSING_METHOD                        = 18;
    2324  public static final byte ATTR_STACK_MAP_TABLE                         = 19;
    2325  public static final byte ATTR_BOOTSTRAP_METHODS                       = 20;
    2326  public static final byte ATTR_METHOD_PARAMETERS                       = 21;
    2327  public static final byte ATTR_MODULE                                  = 22;
    2328  public static final byte ATTR_MODULE_PACKAGES                         = 23;
    2329  public static final byte ATTR_MODULE_MAIN_CLASS                       = 24;
    2330  public static final byte ATTR_NEST_HOST                               = 25;
    2331  public static final byte ATTR_NEST_MEMBERS                            = 26;
    2332
    2333  public static final short KNOWN_ATTRIBUTES = 27; // count of attributes
    2334
    2335  private static final String[] ATTRIBUTE_NAMES = {
    2336    "SourceFile", "ConstantValue", "Code", "Exceptions",
    2337    "LineNumberTable", "LocalVariableTable",
    2338    "InnerClasses", "Synthetic", "Deprecated",
    2339    "PMGClass", "Signature", "StackMap",
    2340    "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
    2341    "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations",
    2342    "AnnotationDefault", "LocalVariableTypeTable", "EnclosingMethod", "StackMapTable",
    2343    "BootstrapMethods", "MethodParameters", "Module", "ModulePackages",
    2344    "ModuleMainClass", "NestHost", "NestMembers"
    2345  };
    2346
    2347  /**
    2348   *
    2349   * @param index
    2350   * @return the attribute name
    2351   * @since 6.0
    2352   */
    2353  public static String getAttributeName(final int index) {
    2354      return ATTRIBUTE_NAMES[index];
    2355  }
    2356
    2357  /** Constants used in the StackMap attribute.
    2358   */
    2359  public static final byte ITEM_Bogus      = 0;
    2360  public static final byte ITEM_Integer    = 1;
    2361  public static final byte ITEM_Float      = 2;
    2362  public static final byte ITEM_Double     = 3;
    2363  public static final byte ITEM_Long       = 4;
    2364  public static final byte ITEM_Null       = 5;
    2365  public static final byte ITEM_InitObject = 6;
    2366  public static final byte ITEM_Object     = 7;
    2367  public static final byte ITEM_NewObject  = 8;
    2368
    2369  private static final String[] ITEM_NAMES = {
    2370    "Bogus", "Integer", "Float", "Double", "Long",
    2371    "Null", "InitObject", "Object", "NewObject"
    2372  };
    2373
    2374  /**
    2375   *
    2376   * @param index
    2377   * @return the item name
    2378   * @since 6.0
    2379   */
    2380  public static String getItemName(final int index) {
    2381      return ITEM_NAMES[index];
    2382  }
    2383
    2384  /** Constants used to identify StackMapEntry types.
    2385   *
    2386   * For those types which can specify a range, the
    2387   * constant names the lowest value.
    2388   */
    2389  public static final int SAME_FRAME = 0;
    2390  public static final int SAME_LOCALS_1_STACK_ITEM_FRAME = 64;
    2391  public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED = 247;
    2392  public static final int CHOP_FRAME = 248;
    2393  public static final int SAME_FRAME_EXTENDED = 251;
    2394  public static final int APPEND_FRAME = 252;
    2395  public static final int FULL_FRAME = 255;
    2396
    2397  /** Constants that define the maximum value of
    2398   * those constants which store ranges. */
    2399
    2400  public static final int SAME_FRAME_MAX = 63;
    2401  public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_MAX = 127;
    2402  public static final int CHOP_FRAME_MAX = 250;
    2403  public static final int APPEND_FRAME_MAX = 254;
    2404
    2405
    2406  // Constants defining the behavior of the Method Handles (JVMS �5.4.3.5)
    2407
    2408  public static final byte REF_getField         = 1;
    2409  public static final byte REF_getStatic        = 2;
    2410  public static final byte REF_putField         = 3;
    2411  public static final byte REF_putStatic        = 4;
    2412  public static final byte REF_invokeVirtual    = 5;
    2413  public static final byte REF_invokeStatic     = 6;
    2414  public static final byte REF_invokeSpecial    = 7;
    2415  public static final byte REF_newInvokeSpecial = 8;
    2416  public static final byte REF_invokeInterface  = 9;
    2417
    2418  /**
    2419   * The names of the reference_kinds of a CONSTANT_MethodHandle_info.
    2420   */
    2421  private static final String[] METHODHANDLE_NAMES = {
    2422      "", "getField", "getStatic", "putField", "putStatic", "invokeVirtual",
    2423      "invokeStatic", "invokeSpecial", "newInvokeSpecial", "invokeInterface" };
    2424
    2425  /**
    2426   *
    2427   * @param index
    2428   * @return the method handle name
    2429   * @since 6.0
    2430   */
    2431  public static String getMethodHandleName(final int index) {
    2432      return METHODHANDLE_NAMES[index];
    2433  }
    2434
    2435  private Const() { } // not instantiable
    2436
    2437}