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