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