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