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