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