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