1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * https://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.bcel;
20
21 import java.util.Arrays;
22 import java.util.Collections;
23
24 /**
25 * Constants for the project, mostly defined in the JVM specification.
26 *
27 * @since 6.0 (intended to replace the Constants interface)
28 */
29 public final class Const {
30
31 /**
32 * Java class file format Magic number: {@value}.
33 *
34 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.1-200-A"> The ClassFile Structure
35 * in The Java Virtual Machine Specification</a>
36 */
37 public static final int JVM_CLASSFILE_MAGIC = 0xCAFEBABE;
38
39 /**
40 * Major version number of class files for Java 1.1: {@value}.
41 *
42 * @see #MINOR_1_1
43 */
44 public static final short MAJOR_1_1 = 45;
45
46 /**
47 * Minor version number of class files for Java 1.1: {@value}.
48 *
49 * @see #MAJOR_1_1
50 */
51 public static final short MINOR_1_1 = 3;
52
53 /**
54 * Major version number of class files for Java 1.2: {@value}.
55 *
56 * @see #MINOR_1_2
57 */
58 public static final short MAJOR_1_2 = 46;
59
60 /**
61 * Minor version number of class files for Java 1.2: {@value}.
62 *
63 * @see #MAJOR_1_2
64 */
65 public static final short MINOR_1_2 = 0;
66
67 /**
68 * Major version number of class files for Java 1.2: {@value}.
69 *
70 * @see #MINOR_1_2
71 */
72 public static final short MAJOR_1_3 = 47;
73
74 /**
75 * Minor version number of class files for Java 1.3: {@value}.
76 *
77 * @see #MAJOR_1_3
78 */
79 public static final short MINOR_1_3 = 0;
80
81 /**
82 * Major version number of class files for Java 1.3: {@value}.
83 *
84 * @see #MINOR_1_3
85 */
86 public static final short MAJOR_1_4 = 48;
87
88 /**
89 * Minor version number of class files for Java 1.4: {@value}.
90 *
91 * @see #MAJOR_1_4
92 */
93 public static final short MINOR_1_4 = 0;
94
95 /**
96 * Major version number of class files for Java 1.4: {@value}.
97 *
98 * @see #MINOR_1_4
99 */
100 public static final short MAJOR_1_5 = 49;
101
102 /**
103 * Minor version number of class files for Java 1.5: {@value}.
104 *
105 * @see #MAJOR_1_5
106 */
107 public static final short MINOR_1_5 = 0;
108
109 /**
110 * Major version number of class files for Java 1.6: {@value}.
111 *
112 * @see #MINOR_1_6
113 */
114 public static final short MAJOR_1_6 = 50;
115
116 /**
117 * Minor version number of class files for Java 1.6: {@value}.
118 *
119 * @see #MAJOR_1_6
120 */
121 public static final short MINOR_1_6 = 0;
122
123 /**
124 * Major version number of class files for Java 1.7: {@value}.
125 *
126 * @see #MINOR_1_7
127 */
128 public static final short MAJOR_1_7 = 51;
129
130 /**
131 * Minor version number of class files for Java 1.7: {@value}.
132 *
133 * @see #MAJOR_1_7
134 */
135 public static final short MINOR_1_7 = 0;
136
137 /**
138 * Major version number of class files for Java 1.8: {@value}.
139 *
140 * @see #MINOR_1_8
141 */
142 public static final short MAJOR_1_8 = 52;
143
144 /**
145 * Minor version number of class files for Java 1.8: {@value}.
146 *
147 * @see #MAJOR_1_8
148 */
149 public static final short MINOR_1_8 = 0;
150
151 /**
152 * Major version number of class files for Java 9: {@value}.
153 *
154 * @see #MINOR_9
155 */
156 public static final short MAJOR_9 = 53;
157
158 /**
159 * Minor version number of class files for Java 9: {@value}.
160 *
161 * @see #MAJOR_9
162 */
163 public static final short MINOR_9 = 0;
164
165 /**
166 * @deprecated Use {@link #MAJOR_9} ({@value}) instead.
167 */
168 @Deprecated
169 public static final short MAJOR_1_9 = MAJOR_9;
170
171 /**
172 * @deprecated Use {@link #MINOR_9} ({@value}) instead.
173 */
174 @Deprecated
175 public static final short MINOR_1_9 = MINOR_9;
176
177 /**
178 * Major version number of class files for Java 10: {@value}.
179 *
180 * @see #MINOR_10
181 */
182 public static final short MAJOR_10 = 54;
183
184 /**
185 * Minor version number of class files for Java 10: {@value}.
186 *
187 * @see #MAJOR_10
188 */
189 public static final short MINOR_10 = 0;
190
191 /**
192 * Major version number of class files for Java 11: {@value}.
193 *
194 * @see #MINOR_11
195 */
196 public static final short MAJOR_11 = 55;
197
198 /**
199 * Minor version number of class files for Java 11: {@value}.
200 *
201 * @see #MAJOR_11
202 */
203 public static final short MINOR_11 = 0;
204
205 /**
206 * Major version number of class files for Java 12: {@value}.
207 *
208 * @see #MINOR_12
209 */
210 public static final short MAJOR_12 = 56;
211
212 /**
213 * Minor version number of class files for Java 12: {@value}.
214 *
215 * @see #MAJOR_12
216 */
217 public static final short MINOR_12 = 0;
218
219 /**
220 * Major version number of class files for Java 13: {@value}.
221 *
222 * @see #MINOR_13
223 */
224 public static final short MAJOR_13 = 57;
225
226 /**
227 * Minor version number of class files for Java 13: {@value}.
228 *
229 * @see #MAJOR_13
230 */
231 public static final short MINOR_13 = 0;
232
233 /**
234 * Minor version number of class files for Java 14: {@value}.
235 *
236 * @see #MAJOR_14
237 * @since 6.4.0
238 */
239 public static final short MINOR_14 = 0;
240
241 /**
242 * Minor version number of class files for Java 15: {@value}.
243 *
244 * @see #MAJOR_15
245 * @since 6.6.0
246 */
247 public static final short MINOR_15 = 0;
248
249 /**
250 * Minor version number of class files for Java 16: {@value}.
251 *
252 * @see #MAJOR_16
253 * @since 6.6.0
254 */
255 public static final short MINOR_16 = 0;
256
257 /**
258 * Minor version number of class files for Java 17: {@value}.
259 *
260 * @see #MAJOR_17
261 * @since 6.6.0
262 */
263 public static final short MINOR_17 = 0;
264
265 /**
266 * Minor version number of class files for Java 18: {@value}.
267 *
268 * @see #MAJOR_18
269 * @since 6.6.0
270 */
271 public static final short MINOR_18 = 0;
272
273 /**
274 * Minor version number of class files for Java 19: {@value}.
275 *
276 * @see #MAJOR_19
277 * @since 6.6.0
278 */
279 public static final short MINOR_19 = 0;
280
281 /**
282 * Minor version number of class files for Java 20: {@value}.
283 *
284 * @see #MAJOR_20
285 * @since 6.8.0
286 */
287 public static final short MINOR_20 = 0;
288
289 /**
290 * Minor version number of class files for Java 21: {@value}.
291 *
292 * @see #MAJOR_21
293 * @since 6.8.0
294 */
295 public static final short MINOR_21 = 0;
296
297 /**
298 * Minor version number of class files for Java 22: {@value}.
299 *
300 * @see #MAJOR_22
301 * @since 6.10.0
302 */
303 public static final short MINOR_22 = 0;
304
305 /**
306 * Minor version number of class files for Java 23: {@value}.
307 *
308 * @see #MAJOR_23
309 * @since 6.10.0
310 */
311 public static final short MINOR_23 = 0;
312
313 /**
314 * Minor version number of class files for Java 24: {@value}.
315 *
316 * @see #MAJOR_24
317 * @since 6.10.0
318 */
319 public static final short MINOR_24 = 0;
320
321 /**
322 * Minor version number of class files for Java 25: {@value}.
323 *
324 * @see #MAJOR_25
325 * @since 6.11.0
326 */
327 public static final short MINOR_25 = 0;
328
329 /**
330 * Major version number of class files for Java 14: {@value}.
331 *
332 * @see #MINOR_14
333 * @since 6.4.0
334 */
335 public static final short MAJOR_14 = 58;
336
337 /**
338 * Major version number of class files for Java 15: {@value}.
339 *
340 * @see #MINOR_15
341 * @since 6.6.0
342 */
343 public static final short MAJOR_15 = 59;
344
345 /**
346 * Major version number of class files for Java 16: {@value}.
347 *
348 * @see #MINOR_16
349 * @since 6.6.0
350 */
351 public static final short MAJOR_16 = 60;
352
353 /**
354 * Major version number of class files for Java 17: {@value}.
355 *
356 * @see #MINOR_17
357 * @since 6.6.0
358 */
359 public static final short MAJOR_17 = 61;
360
361 /**
362 * Major version number of class files for Java 18: {@value}.
363 *
364 * @see #MINOR_18
365 * @since 6.6.0
366 */
367 public static final short MAJOR_18 = 62;
368
369 /**
370 * Major version number of class files for Java 19: {@value}.
371 *
372 * @see #MINOR_19
373 * @since 6.6.0
374 */
375 public static final short MAJOR_19 = 63;
376
377 /**
378 * Major version number of class files for Java 20: {@value}.
379 *
380 * @see #MINOR_20
381 * @since 6.8.0
382 */
383 public static final short MAJOR_20 = 64;
384
385 /**
386 * Major version number of class files for Java 21: {@value}.
387 *
388 * @see #MINOR_21
389 * @since 6.8.0
390 */
391 public static final short MAJOR_21 = 65;
392
393 /**
394 * Major version number of class files for Java 22: {@value}.
395 *
396 * @see #MINOR_22
397 * @since 6.10.0
398 */
399 public static final short MAJOR_22 = 66;
400
401 /**
402 * Major version number of class files for Java 23: {@value}.
403 *
404 * @see #MINOR_23
405 * @since 6.10.0
406 */
407 public static final short MAJOR_23 = 67;
408
409 /**
410 * Major version number of class files for Java 24: {@value}.
411 *
412 * @see #MINOR_24
413 * @since 6.10.0
414 */
415 public static final short MAJOR_24 = 68;
416
417 /**
418 * Major version number of class files for Java 25: {@value}.
419 *
420 * @see #MINOR_25
421 * @since 6.11.0
422 */
423 public static final short MAJOR_25 = 69;
424
425 /**
426 * Default major version number. Class file is for Java 1.1: {@value}.
427 *
428 * @see #MAJOR_1_1
429 */
430 public static final short MAJOR = MAJOR_1_1;
431
432 /**
433 * Default major version number. Class file is for Java 1.1: {@value}.
434 *
435 * @see #MAJOR_1_1
436 */
437 public static final short MINOR = MINOR_1_1;
438
439 /**
440 * Maximum value for an unsigned short: {@value}.
441 */
442 public static final int MAX_SHORT = 65535; // 2^16 - 1
443
444 /**
445 * Maximum value for an unsigned byte: {@value}.
446 */
447 public static final int MAX_BYTE = 255; // 2^8 - 1
448
449 /**
450 * One of the access flags for fields, methods, or classes: {@value}.
451 *
452 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.1-200-E.1"> Flag definitions for
453 * Classes in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
454 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.5"> Flag definitions for Fields
455 * in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
456 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.6"> Flag definitions for Methods
457 * in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
458 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.6-300-D.1-D.1"> Flag
459 * definitions for Inner Classes in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
460 */
461 public static final short ACC_PUBLIC = 0x0001;
462
463 /**
464 * One of the access flags for fields, methods, or classes: {@value}.
465 *
466 * @see #ACC_PUBLIC
467 */
468 public static final short ACC_PRIVATE = 0x0002;
469
470 /**
471 * One of the access flags for fields, methods, or classes: {@value}.
472 *
473 * @see #ACC_PUBLIC
474 */
475 public static final short ACC_PROTECTED = 0x0004;
476
477 /**
478 * One of the access flags for fields, methods, or classes: {@value}.
479 *
480 * @see #ACC_PUBLIC
481 */
482 public static final short ACC_STATIC = 0x0008;
483
484 /**
485 * One of the access flags for fields, methods, or classes: {@value}.
486 *
487 * @see #ACC_PUBLIC
488 */
489 public static final short ACC_FINAL = 0x0010;
490
491 /**
492 * One of the access flags for the Module attribute: {@value}.
493 *
494 * @see #ACC_PUBLIC
495 */
496 public static final short ACC_OPEN = 0x0020;
497
498 /**
499 * One of the access flags for classes: {@value}.
500 *
501 * @see #ACC_PUBLIC
502 */
503 public static final short ACC_SUPER = 0x0020;
504
505 /**
506 * One of the access flags for methods: {@value}.
507 *
508 * @see #ACC_PUBLIC
509 */
510 public static final short ACC_SYNCHRONIZED = 0x0020;
511
512 /**
513 * One of the access flags for the Module attribute: {@value}.
514 *
515 * @see #ACC_PUBLIC
516 */
517 public static final short ACC_TRANSITIVE = 0x0020;
518
519 /**
520 * One of the access flags for methods: {@value}.
521 *
522 * @see #ACC_PUBLIC
523 */
524 public static final short ACC_BRIDGE = 0x0040;
525
526 /**
527 * One of the access flags for the Module attribute: {@value}.
528 *
529 * @see #ACC_PUBLIC
530 */
531 public static final short ACC_STATIC_PHASE = 0x0040;
532
533 /**
534 * One of the access flags for fields: {@value}.
535 *
536 * @see #ACC_PUBLIC
537 */
538 public static final short ACC_VOLATILE = 0x0040;
539
540 /**
541 * One of the access flags for fields: {@value}.
542 *
543 * @see #ACC_PUBLIC
544 */
545 public static final short ACC_TRANSIENT = 0x0080;
546
547 /**
548 * One of the access flags for methods: {@value}.
549 *
550 * @see #ACC_PUBLIC
551 */
552 public static final short ACC_VARARGS = 0x0080;
553
554 /**
555 * One of the access flags for methods: {@value}.
556 *
557 * @see #ACC_PUBLIC
558 */
559 public static final short ACC_NATIVE = 0x0100;
560
561 /**
562 * One of the access flags for classes: {@value}.
563 *
564 * @see #ACC_PUBLIC
565 */
566 public static final short ACC_INTERFACE = 0x0200;
567
568 /**
569 * One of the access flags for methods or classes: {@value}.
570 *
571 * @see #ACC_PUBLIC
572 */
573 public static final short ACC_ABSTRACT = 0x0400;
574
575 /**
576 * One of the access flags for methods: {@value}.
577 *
578 * @see #ACC_PUBLIC
579 */
580 public static final short ACC_STRICT = 0x0800;
581
582 /**
583 * One of the access flags for fields, methods, classes, MethodParameter attribute, or Module attribute: {@value}.
584 *
585 * @see #ACC_PUBLIC
586 */
587 public static final short ACC_SYNTHETIC = 0x1000;
588
589 /**
590 * One of the access flags for classes: {@value}.
591 *
592 * @see #ACC_PUBLIC
593 */
594 public static final short ACC_ANNOTATION = 0x2000;
595
596 /**
597 * One of the access flags for fields or classes: {@value}.
598 *
599 * @see #ACC_PUBLIC
600 */
601 public static final short ACC_ENUM = 0x4000;
602
603 // Applies to classes compiled by new compilers only
604 /**
605 * One of the access flags for MethodParameter or Module attributes: {@value}.
606 *
607 * @see #ACC_PUBLIC
608 */
609 public static final short ACC_MANDATED = (short) 0x8000;
610
611 /**
612 * One of the access flags for classes: {@value}.
613 *
614 * @see #ACC_PUBLIC
615 */
616 public static final short ACC_MODULE = (short) 0x8000;
617
618 /**
619 * One of the access flags for fields, methods, or classes: {@value}.
620 *
621 * @see #ACC_PUBLIC
622 * @deprecated Use {@link #MAX_ACC_FLAG_I}
623 */
624 @Deprecated
625 public static final short MAX_ACC_FLAG = ACC_ENUM;
626
627 /**
628 * One of the access flags for fields, methods, or classes. ACC_MODULE is negative as a short: {@value}.
629 *
630 * @see #ACC_PUBLIC
631 * @since 6.4.0
632 */
633 public static final int MAX_ACC_FLAG_I = 0x8000; // ACC_MODULE is negative as a short
634
635 // Note that do to overloading:
636 // 'synchronized' is for methods, might be 'open' (if Module), 'super' (if class), or 'transitive' (if Module).
637 // 'volatile' is for fields, might be 'bridge' (if method) or 'static_phase' (if Module)
638 // 'transient' is for fields, might be 'varargs' (if method)
639 // 'module' is for classes, might be 'mandated' (if Module or MethodParameters)
640 /**
641 * The names of the access flags.
642 */
643 private static final String[] ACCESS_NAMES = {"public", "private", "protected", "static", "final", "synchronized", "volatile", "transient", "native",
644 "interface", "abstract", "strictfp", "synthetic", "annotation", "enum", "module"};
645
646 /** @since 6.0 */
647 public static final int ACCESS_NAMES_LENGTH = ACCESS_NAMES.length;
648
649 /**
650 * Marks a constant pool entry as type UTF-8: {@value}.
651 *
652 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.7"> The Constant Pool in The
653 * Java Virtual Machine Specification</a>
654 */
655 public static final byte CONSTANT_Utf8 = 1;
656
657 /*
658 * The description of the constant pool is at: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4
659 * References below are to the individual sections
660 */
661
662 /**
663 * Marks a constant pool entry as type Integer: {@value}.
664 *
665 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4"> The Constant Pool in The
666 * Java Virtual Machine Specification</a>
667 */
668 public static final byte CONSTANT_Integer = 3;
669
670 /**
671 * Marks a constant pool entry as type Float: {@value}.
672 *
673 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4"> The Constant Pool in The
674 * Java Virtual Machine Specification</a>
675 */
676 public static final byte CONSTANT_Float = 4;
677
678 /**
679 * Marks a constant pool entry as type Long: {@value}.
680 *
681 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5"> The Constant Pool in The
682 * Java Virtual Machine Specification</a>
683 */
684 public static final byte CONSTANT_Long = 5;
685
686 /**
687 * Marks a constant pool entry as type Double: {@value}.
688 *
689 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5"> The Constant Pool in The
690 * Java Virtual Machine Specification</a>
691 */
692 public static final byte CONSTANT_Double = 6;
693
694 /**
695 * Marks a constant pool entry as a Class: {@value}.
696 *
697 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1"> The Constant Pool in The
698 * Java Virtual Machine Specification</a>
699 */
700 public static final byte CONSTANT_Class = 7;
701
702 /**
703 * Marks a constant pool entry as a Field Reference: {@value}.
704 *
705 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> The Constant Pool in The
706 * Java Virtual Machine Specification</a>
707 */
708 public static final byte CONSTANT_Fieldref = 9;
709
710 /**
711 * Marks a constant pool entry as type String: {@value}.
712 *
713 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.3"> The Constant Pool in The
714 * Java Virtual Machine Specification</a>
715 */
716 public static final byte CONSTANT_String = 8;
717
718 /**
719 * Marks a constant pool entry as a Method Reference: {@value}.
720 *
721 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> The Constant Pool in The
722 * Java Virtual Machine Specification</a>
723 */
724 public static final byte CONSTANT_Methodref = 10;
725
726 /**
727 * Marks a constant pool entry as an Interface Method Reference: {@value}.
728 *
729 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2"> The Constant Pool in The
730 * Java Virtual Machine Specification</a>
731 */
732 public static final byte CONSTANT_InterfaceMethodref = 11;
733
734 /**
735 * Marks a constant pool entry as a name and type: {@value}.
736 *
737 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.6"> The Constant Pool in The
738 * Java Virtual Machine Specification</a>
739 */
740 public static final byte CONSTANT_NameAndType = 12;
741
742 /**
743 * Marks a constant pool entry as a Method Handle: {@value}.
744 *
745 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.8"> The Constant Pool in The
746 * Java Virtual Machine Specification</a>
747 */
748 public static final byte CONSTANT_MethodHandle = 15;
749
750 /**
751 * Marks a constant pool entry as a Method Type: {@value}.
752 *
753 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.9"> The Constant Pool in The
754 * Java Virtual Machine Specification</a>
755 */
756 public static final byte CONSTANT_MethodType = 16;
757
758 /**
759 * Marks a constant pool entry as dynamically computed: {@value}.
760 *
761 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-4.html#jvms-4.4.10"> The Constant Pool in The
762 * Java Virtual Machine Specification</a>
763 * @since 6.3
764 */
765 public static final byte CONSTANT_Dynamic = 17;
766
767 /**
768 * Marks a constant pool entry as an Invoke Dynamic: {@value}.
769 *
770 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.10"> The Constant Pool in The
771 * Java Virtual Machine Specification</a>
772 */
773 public static final byte CONSTANT_InvokeDynamic = 18;
774
775 /**
776 * Marks a constant pool entry as a Module Reference: {@value}.
777 *
778 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4.11"> The Constant Pool in The
779 * Java Virtual Machine Specification</a>
780 * @since 6.1
781 */
782 public static final byte CONSTANT_Module = 19;
783
784 /**
785 * Marks a constant pool entry as a Package Reference: {@value}.
786 *
787 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4.12"> The Constant Pool in The
788 * Java Virtual Machine Specification</a>
789 * @since 6.1
790 */
791 public static final byte CONSTANT_Package = 20;
792
793 /**
794 * The names of the types of entries in a constant pool. Use getConstantName instead
795 */
796 private static final String[] CONSTANT_NAMES = {"", "CONSTANT_Utf8", "", "CONSTANT_Integer", "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double",
797 "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref", "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref", "CONSTANT_NameAndType", "", "",
798 "CONSTANT_MethodHandle", "CONSTANT_MethodType", "CONSTANT_Dynamic", "CONSTANT_InvokeDynamic", "CONSTANT_Module", "CONSTANT_Package"};
799
800 /**
801 * The name of the static initializer, also called "class initialization method" or "interface
802 * initialization method". This is {@value}.
803 */
804 public static final String STATIC_INITIALIZER_NAME = "<clinit>";
805
806 /**
807 * The name of every constructor method in a class, also called "instance initialization method". This is
808 * {@value}.
809 */
810 public static final String CONSTRUCTOR_NAME = "<init>";
811
812 /**
813 * The names of the interfaces implemented by arrays.
814 */
815 private static final String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"};
816
817 /**
818 * Maximum Constant Pool entries: {@value}. One of the limitations of the Java Virtual Machine.
819 *
820 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.11-100-A"> The Java Virtual
821 * Machine Specification, Java SE 8 Edition, page 330, chapter 4.11.</a>
822 */
823 public static final int MAX_CP_ENTRIES = 65535;
824
825 /**
826 * Maximum code size (plus one; the code size must be LESS than this): {@value}.
827 * <p>
828 * One of the limitations of the Java Virtual Machine. Note vmspec2 page 152 ("Limitations") says:
829 * </p>
830 * <pre>"The amount of code per non-native, non-abstract method is limited to 65536 bytes by the sizes of the indices in the exception_table of the Code
831 * attribute (§4.7.3), in the LineNumberTable attribute (§4.7.8), and in the LocalVariableTable attribute (§4.7.9)." However this should be taken as an
832 * upper limit rather than the defined maximum. On page 134 (4.8.1 Static Constants) of the same spec, it says: "The value of the code_length item must be
833 * less than 65536."</pre>
834 * <p>
835 * The entry in the Limitations section has been removed from later versions of the specification; it is not present in the Java SE 8 edition.
836 * </p>
837 *
838 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3-300-E"> The Java Virtual Machine Specification, Java SE 8
839 * Edition, page 104, chapter 4.7.</a>
840 */
841 public static final int MAX_CODE_SIZE = 65536; // bytes
842
843 /**
844 * The maximum number of dimensions in an array: {@value}. One of the limitations of the Java Virtual Machine.
845 *
846 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.2-150"> Field Descriptors in
847 * The Java Virtual Machine Specification</a>
848 */
849 public static final int MAX_ARRAY_DIMENSIONS = 255;
850
851 /**
852 * Java VM opcode {@value}.
853 *
854 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.nop"> Opcode definitions in The
855 * Java Virtual Machine Specification</a>
856 */
857 public static final short NOP = 0;
858
859 /**
860 * Java VM opcode {@value}.
861 *
862 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aconst_null"> Opcode
863 * definitions in The Java Virtual Machine Specification</a>
864 */
865 public static final short ACONST_NULL = 1;
866
867 /**
868 * Java VM opcode {@value}.
869 *
870 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
871 * in The Java Virtual Machine Specification</a>
872 */
873 public static final short ICONST_M1 = 2;
874
875 /**
876 * Java VM opcode {@value}.
877 *
878 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
879 * in The Java Virtual Machine Specification</a>
880 */
881 public static final short ICONST_0 = 3;
882
883 /**
884 * Java VM opcode {@value}.
885 *
886 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
887 * in The Java Virtual Machine Specification</a>
888 */
889 public static final short ICONST_1 = 4;
890
891 /**
892 * Java VM opcode {@value}.
893 *
894 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
895 * in The Java Virtual Machine Specification</a>
896 */
897 public static final short ICONST_2 = 5;
898
899 /**
900 * Java VM opcode {@value}.
901 *
902 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
903 * in The Java Virtual Machine Specification</a>
904 */
905 public static final short ICONST_3 = 6;
906
907 /**
908 * Java VM opcode {@value}.
909 *
910 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
911 * in The Java Virtual Machine Specification</a>
912 */
913 public static final short ICONST_4 = 7;
914
915 /**
916 * Java VM opcode {@value}.
917 *
918 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i"> Opcode definitions
919 * in The Java Virtual Machine Specification</a>
920 */
921 public static final short ICONST_5 = 8;
922
923 /**
924 * Java VM opcode {@value}.
925 *
926 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l"> Opcode definitions
927 * in The Java Virtual Machine Specification</a>
928 */
929 public static final short LCONST_0 = 9;
930
931 /**
932 * Java VM opcode {@value}.
933 *
934 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l"> Opcode definitions
935 * in The Java Virtual Machine Specification</a>
936 */
937 public static final short LCONST_1 = 10;
938
939 /**
940 * Java VM opcode {@value}.
941 *
942 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> Opcode definitions
943 * in The Java Virtual Machine Specification</a>
944 */
945 public static final short FCONST_0 = 11;
946
947 /**
948 * Java VM opcode {@value}.
949 *
950 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> Opcode definitions
951 * in The Java Virtual Machine Specification</a>
952 */
953 public static final short FCONST_1 = 12;
954
955 /**
956 * Java VM opcode {@value}.
957 *
958 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f"> Opcode definitions
959 * in The Java Virtual Machine Specification</a>
960 */
961 public static final short FCONST_2 = 13;
962
963 /**
964 * Java VM opcode {@value}.
965 *
966 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d"> Opcode definitions
967 * in The Java Virtual Machine Specification</a>
968 */
969 public static final short DCONST_0 = 14;
970
971 /**
972 * Java VM opcode {@value}.
973 *
974 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d"> Opcode definitions
975 * in The Java Virtual Machine Specification</a>
976 */
977 public static final short DCONST_1 = 15;
978
979 /**
980 * Java VM opcode {@value}.
981 *
982 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bipush"> Opcode definitions in
983 * The Java Virtual Machine Specification</a>
984 */
985 public static final short BIPUSH = 16;
986
987 /**
988 * Java VM opcode {@value}.
989 *
990 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sipush"> Opcode definitions in
991 * The Java Virtual Machine Specification</a>
992 */
993 public static final short SIPUSH = 17;
994
995 /**
996 * Java VM opcode {@value}.
997 *
998 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc"> Opcode definitions in The
999 * Java Virtual Machine Specification</a>
1000 */
1001 public static final short LDC = 18;
1002
1003 /**
1004 * Java VM opcode {@value}.
1005 *
1006 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc_w"> Opcode definitions in
1007 * The Java Virtual Machine Specification</a>
1008 */
1009 public static final short LDC_W = 19;
1010
1011 /**
1012 * Java VM opcode {@value}.
1013 *
1014 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc2_w"> Opcode definitions in
1015 * The Java Virtual Machine Specification</a>
1016 */
1017 public static final short LDC2_W = 20;
1018
1019 /**
1020 * Java VM opcode {@value}.
1021 *
1022 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload"> Opcode definitions in
1023 * The Java Virtual Machine Specification</a>
1024 */
1025 public static final short ILOAD = 21;
1026
1027 /**
1028 * Java VM opcode {@value}.
1029 *
1030 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload"> Opcode definitions in
1031 * The Java Virtual Machine Specification</a>
1032 */
1033 public static final short LLOAD = 22;
1034
1035 /**
1036 * Java VM opcode {@value}.
1037 *
1038 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload"> Opcode definitions in
1039 * The Java Virtual Machine Specification</a>
1040 */
1041 public static final short FLOAD = 23;
1042
1043 /**
1044 * Java VM opcode {@value}.
1045 *
1046 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload"> Opcode definitions in
1047 * The Java Virtual Machine Specification</a>
1048 */
1049 public static final short DLOAD = 24;
1050
1051 /**
1052 * Java VM opcode {@value}.
1053 *
1054 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload"> Opcode definitions in
1055 * The Java Virtual Machine Specification</a>
1056 */
1057 public static final short ALOAD = 25;
1058
1059 /**
1060 * Java VM opcode {@value}.
1061 *
1062 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> Opcode definitions in
1063 * The Java Virtual Machine Specification</a>
1064 */
1065 public static final short ILOAD_0 = 26;
1066
1067 /**
1068 * Java VM opcode {@value}.
1069 *
1070 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> Opcode definitions in
1071 * The Java Virtual Machine Specification</a>
1072 */
1073 public static final short ILOAD_1 = 27;
1074
1075 /**
1076 * Java VM opcode {@value}.
1077 *
1078 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> Opcode definitions in
1079 * The Java Virtual Machine Specification</a>
1080 */
1081 public static final short ILOAD_2 = 28;
1082
1083 /**
1084 * Java VM opcode {@value}.
1085 *
1086 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n"> Opcode definitions in
1087 * The Java Virtual Machine Specification</a>
1088 */
1089 public static final short ILOAD_3 = 29;
1090
1091 /**
1092 * Java VM opcode {@value}.
1093 *
1094 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> Opcode definitions in
1095 * The Java Virtual Machine Specification</a>
1096 */
1097 public static final short LLOAD_0 = 30;
1098
1099 /**
1100 * Java VM opcode {@value}.
1101 *
1102 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> Opcode definitions in
1103 * The Java Virtual Machine Specification</a>
1104 */
1105 public static final short LLOAD_1 = 31;
1106
1107 /**
1108 * Java VM opcode {@value}.
1109 *
1110 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> Opcode definitions in
1111 * The Java Virtual Machine Specification</a>
1112 */
1113 public static final short LLOAD_2 = 32;
1114
1115 /**
1116 * Java VM opcode {@value}.
1117 *
1118 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n"> Opcode definitions in
1119 * The Java Virtual Machine Specification</a>
1120 */
1121 public static final short LLOAD_3 = 33;
1122
1123 /**
1124 * Java VM opcode {@value}.
1125 *
1126 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> Opcode definitions in
1127 * The Java Virtual Machine Specification</a>
1128 */
1129 public static final short FLOAD_0 = 34;
1130
1131 /**
1132 * Java VM opcode {@value}.
1133 *
1134 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> Opcode definitions in
1135 * The Java Virtual Machine Specification</a>
1136 */
1137 public static final short FLOAD_1 = 35;
1138
1139 /**
1140 * Java VM opcode {@value}.
1141 *
1142 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> Opcode definitions in
1143 * The Java Virtual Machine Specification</a>
1144 */
1145 public static final short FLOAD_2 = 36;
1146
1147 /**
1148 * Java VM opcode {@value}.
1149 *
1150 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n"> Opcode definitions in
1151 * The Java Virtual Machine Specification</a>
1152 */
1153 public static final short FLOAD_3 = 37;
1154
1155 /**
1156 * Java VM opcode {@value}.
1157 *
1158 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> Opcode definitions in
1159 * The Java Virtual Machine Specification</a>
1160 */
1161 public static final short DLOAD_0 = 38;
1162
1163 /**
1164 * Java VM opcode {@value}.
1165 *
1166 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> Opcode definitions in
1167 * The Java Virtual Machine Specification</a>
1168 */
1169 public static final short DLOAD_1 = 39;
1170
1171 /**
1172 * Java VM opcode {@value}.
1173 *
1174 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> Opcode definitions in
1175 * The Java Virtual Machine Specification</a>
1176 */
1177 public static final short DLOAD_2 = 40;
1178
1179 /**
1180 * Java VM opcode {@value}.
1181 *
1182 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n"> Opcode definitions in
1183 * The Java Virtual Machine Specification</a>
1184 */
1185 public static final short DLOAD_3 = 41;
1186
1187 /**
1188 * Java VM opcode {@value}.
1189 *
1190 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> Opcode definitions in
1191 * The Java Virtual Machine Specification</a>
1192 */
1193 public static final short ALOAD_0 = 42;
1194
1195 /**
1196 * Java VM opcode {@value}.
1197 *
1198 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> Opcode definitions in
1199 * The Java Virtual Machine Specification</a>
1200 */
1201 public static final short ALOAD_1 = 43;
1202
1203 /**
1204 * Java VM opcode {@value}.
1205 *
1206 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> Opcode definitions in
1207 * The Java Virtual Machine Specification</a>
1208 */
1209 public static final short ALOAD_2 = 44;
1210
1211 /**
1212 * Java VM opcode {@value}.
1213 *
1214 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n"> Opcode definitions in
1215 * The Java Virtual Machine Specification</a>
1216 */
1217 public static final short ALOAD_3 = 45;
1218
1219 /**
1220 * Java VM opcode {@value}.
1221 *
1222 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iaload"> Opcode definitions in
1223 * The Java Virtual Machine Specification</a>
1224 */
1225 public static final short IALOAD = 46;
1226
1227 /**
1228 * Java VM opcode {@value}.
1229 *
1230 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.laload"> Opcode definitions in
1231 * The Java Virtual Machine Specification</a>
1232 */
1233 public static final short LALOAD = 47;
1234
1235 /**
1236 * Java VM opcode {@value}.
1237 *
1238 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.faload"> Opcode definitions in
1239 * The Java Virtual Machine Specification</a>
1240 */
1241 public static final short FALOAD = 48;
1242
1243 /**
1244 * Java VM opcode {@value}.
1245 *
1246 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.daload"> Opcode definitions in
1247 * The Java Virtual Machine Specification</a>
1248 */
1249 public static final short DALOAD = 49;
1250
1251 /**
1252 * Java VM opcode {@value}.
1253 *
1254 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aaload"> Opcode definitions in
1255 * The Java Virtual Machine Specification</a>
1256 */
1257 public static final short AALOAD = 50;
1258
1259 /**
1260 * Java VM opcode {@value}.
1261 *
1262 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.baload"> Opcode definitions in
1263 * The Java Virtual Machine Specification</a>
1264 */
1265 public static final short BALOAD = 51;
1266
1267 /**
1268 * Java VM opcode {@value}.
1269 *
1270 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.caload"> Opcode definitions in
1271 * The Java Virtual Machine Specification</a>
1272 */
1273 public static final short CALOAD = 52;
1274
1275 /**
1276 * Java VM opcode {@value}.
1277 *
1278 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.saload"> Opcode definitions in
1279 * The Java Virtual Machine Specification</a>
1280 */
1281 public static final short SALOAD = 53;
1282
1283 /**
1284 * Java VM opcode {@value}.
1285 *
1286 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore"> Opcode definitions in
1287 * The Java Virtual Machine Specification</a>
1288 */
1289 public static final short ISTORE = 54;
1290
1291 /**
1292 * Java VM opcode {@value}.
1293 *
1294 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore"> Opcode definitions in
1295 * The Java Virtual Machine Specification</a>
1296 */
1297 public static final short LSTORE = 55;
1298
1299 /**
1300 * Java VM opcode {@value}.
1301 *
1302 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore"> Opcode definitions in
1303 * The Java Virtual Machine Specification</a>
1304 */
1305 public static final short FSTORE = 56;
1306
1307 /**
1308 * Java VM opcode {@value}.
1309 *
1310 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore"> Opcode definitions in
1311 * The Java Virtual Machine Specification</a>
1312 */
1313 public static final short DSTORE = 57;
1314
1315 /**
1316 * Java VM opcode {@value}.
1317 *
1318 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore"> Opcode definitions in
1319 * The Java Virtual Machine Specification</a>
1320 */
1321 public static final short ASTORE = 58;
1322
1323 /**
1324 * Java VM opcode {@value}.
1325 *
1326 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> Opcode definitions
1327 * in The Java Virtual Machine Specification</a>
1328 */
1329 public static final short ISTORE_0 = 59;
1330
1331 /**
1332 * Java VM opcode {@value}.
1333 *
1334 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> Opcode definitions
1335 * in The Java Virtual Machine Specification</a>
1336 */
1337 public static final short ISTORE_1 = 60;
1338
1339 /**
1340 * Java VM opcode {@value}.
1341 *
1342 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> Opcode definitions
1343 * in The Java Virtual Machine Specification</a>
1344 */
1345 public static final short ISTORE_2 = 61;
1346
1347 /**
1348 * Java VM opcode {@value}.
1349 *
1350 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n"> Opcode definitions
1351 * in The Java Virtual Machine Specification</a>
1352 */
1353 public static final short ISTORE_3 = 62;
1354
1355 /**
1356 * Java VM opcode {@value}.
1357 *
1358 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> Opcode definitions
1359 * in The Java Virtual Machine Specification</a>
1360 */
1361 public static final short LSTORE_0 = 63;
1362
1363 /**
1364 * Java VM opcode {@value}.
1365 *
1366 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> Opcode definitions
1367 * in The Java Virtual Machine Specification</a>
1368 */
1369 public static final short LSTORE_1 = 64;
1370
1371 /**
1372 * Java VM opcode {@value}.
1373 *
1374 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> Opcode definitions
1375 * in The Java Virtual Machine Specification</a>
1376 */
1377 public static final short LSTORE_2 = 65;
1378
1379 /**
1380 * Java VM opcode {@value}.
1381 *
1382 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n"> Opcode definitions
1383 * in The Java Virtual Machine Specification</a>
1384 */
1385 public static final short LSTORE_3 = 66;
1386
1387 /**
1388 * Java VM opcode {@value}.
1389 *
1390 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> Opcode definitions
1391 * in The Java Virtual Machine Specification</a>
1392 */
1393 public static final short FSTORE_0 = 67;
1394
1395 /**
1396 * Java VM opcode {@value}.
1397 *
1398 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> Opcode definitions
1399 * in The Java Virtual Machine Specification</a>
1400 */
1401 public static final short FSTORE_1 = 68;
1402
1403 /**
1404 * Java VM opcode {@value}.
1405 *
1406 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> Opcode definitions
1407 * in The Java Virtual Machine Specification</a>
1408 */
1409 public static final short FSTORE_2 = 69;
1410
1411 /**
1412 * Java VM opcode {@value}.
1413 *
1414 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n"> Opcode definitions
1415 * in The Java Virtual Machine Specification</a>
1416 */
1417 public static final short FSTORE_3 = 70;
1418
1419 /**
1420 * Java VM opcode {@value}.
1421 *
1422 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> Opcode definitions
1423 * in The Java Virtual Machine Specification</a>
1424 */
1425 public static final short DSTORE_0 = 71;
1426
1427 /**
1428 * Java VM opcode {@value}.
1429 *
1430 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> Opcode definitions
1431 * in The Java Virtual Machine Specification</a>
1432 */
1433 public static final short DSTORE_1 = 72;
1434
1435 /**
1436 * Java VM opcode {@value}.
1437 *
1438 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> Opcode definitions
1439 * in The Java Virtual Machine Specification</a>
1440 */
1441 public static final short DSTORE_2 = 73;
1442
1443 /**
1444 * Java VM opcode {@value}.
1445 *
1446 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n"> Opcode definitions
1447 * in The Java Virtual Machine Specification</a>
1448 */
1449 public static final short DSTORE_3 = 74;
1450
1451 /**
1452 * Java VM opcode {@value}.
1453 *
1454 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> Opcode definitions
1455 * in The Java Virtual Machine Specification</a>
1456 */
1457 public static final short ASTORE_0 = 75;
1458
1459 /**
1460 * Java VM opcode {@value}.
1461 *
1462 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> Opcode definitions
1463 * in The Java Virtual Machine Specification</a>
1464 */
1465 public static final short ASTORE_1 = 76;
1466
1467 /**
1468 * Java VM opcode {@value}.
1469 *
1470 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> Opcode definitions
1471 * in The Java Virtual Machine Specification</a>
1472 */
1473 public static final short ASTORE_2 = 77;
1474
1475 /**
1476 * Java VM opcode {@value}.
1477 *
1478 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n"> Opcode definitions
1479 * in The Java Virtual Machine Specification</a>
1480 */
1481 public static final short ASTORE_3 = 78;
1482
1483 /**
1484 * Java VM opcode {@value}.
1485 *
1486 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iastore"> Opcode definitions in
1487 * The Java Virtual Machine Specification</a>
1488 */
1489 public static final short IASTORE = 79;
1490
1491 /**
1492 * Java VM opcode {@value}.
1493 *
1494 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lastore"> Opcode definitions in
1495 * The Java Virtual Machine Specification</a>
1496 */
1497 public static final short LASTORE = 80;
1498
1499 /**
1500 * Java VM opcode {@value}.
1501 *
1502 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fastore"> Opcode definitions in
1503 * The Java Virtual Machine Specification</a>
1504 */
1505 public static final short FASTORE = 81;
1506
1507 /**
1508 * Java VM opcode {@value}.
1509 *
1510 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dastore"> Opcode definitions in
1511 * The Java Virtual Machine Specification</a>
1512 */
1513 public static final short DASTORE = 82;
1514
1515 /**
1516 * Java VM opcode {@value}.
1517 *
1518 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aastore"> Opcode definitions in
1519 * The Java Virtual Machine Specification</a>
1520 */
1521 public static final short AASTORE = 83;
1522
1523 /**
1524 * Java VM opcode {@value}.
1525 *
1526 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bastore"> Opcode definitions in
1527 * The Java Virtual Machine Specification</a>
1528 */
1529 public static final short BASTORE = 84;
1530
1531 /**
1532 * Java VM opcode {@value}.
1533 *
1534 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.castore"> Opcode definitions in
1535 * The Java Virtual Machine Specification</a>
1536 */
1537 public static final short CASTORE = 85;
1538
1539 /**
1540 * Java VM opcode {@value}.
1541 *
1542 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sastore"> Opcode definitions in
1543 * The Java Virtual Machine Specification</a>
1544 */
1545 public static final short SASTORE = 86;
1546
1547 /**
1548 * Java VM opcode {@value}.
1549 *
1550 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop"> Opcode definitions in The
1551 * Java Virtual Machine Specification</a>
1552 */
1553 public static final short POP = 87;
1554
1555 /**
1556 * Java VM opcode {@value}.
1557 *
1558 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop2"> Opcode definitions in
1559 * The Java Virtual Machine Specification</a>
1560 */
1561 public static final short POP2 = 88;
1562
1563 /**
1564 * Java VM opcode {@value}.
1565 *
1566 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup"> Opcode definitions in The
1567 * Java Virtual Machine Specification</a>
1568 */
1569 public static final short DUP = 89;
1570
1571 /**
1572 * Java VM opcode {@value}.
1573 *
1574 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x1"> Opcode definitions in
1575 * The Java Virtual Machine Specification</a>
1576 */
1577 public static final short DUP_X1 = 90;
1578
1579 /**
1580 * Java VM opcode {@value}.
1581 *
1582 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x2"> Opcode definitions in
1583 * The Java Virtual Machine Specification</a>
1584 */
1585 public static final short DUP_X2 = 91;
1586
1587 /**
1588 * Java VM opcode {@value}.
1589 *
1590 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2"> Opcode definitions in
1591 * The Java Virtual Machine Specification</a>
1592 */
1593 public static final short DUP2 = 92;
1594
1595 /**
1596 * Java VM opcode {@value}.
1597 *
1598 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x1"> Opcode definitions in
1599 * The Java Virtual Machine Specification</a>
1600 */
1601 public static final short DUP2_X1 = 93;
1602
1603 /**
1604 * Java VM opcode {@value}.
1605 *
1606 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x2"> Opcode definitions in
1607 * The Java Virtual Machine Specification</a>
1608 */
1609 public static final short DUP2_X2 = 94;
1610
1611 /**
1612 * Java VM opcode {@value}.
1613 *
1614 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.swap"> Opcode definitions in
1615 * The Java Virtual Machine Specification</a>
1616 */
1617 public static final short SWAP = 95;
1618
1619 /**
1620 * Java VM opcode {@value}.
1621 *
1622 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iadd"> Opcode definitions in
1623 * The Java Virtual Machine Specification</a>
1624 */
1625 public static final short IADD = 96;
1626
1627 /**
1628 * Java VM opcode {@value}.
1629 *
1630 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ladd"> Opcode definitions in
1631 * The Java Virtual Machine Specification</a>
1632 */
1633 public static final short LADD = 97;
1634
1635 /**
1636 * Java VM opcode {@value}.
1637 *
1638 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fadd"> Opcode definitions in
1639 * The Java Virtual Machine Specification</a>
1640 */
1641 public static final short FADD = 98;
1642
1643 /**
1644 * Java VM opcode {@value}.
1645 *
1646 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dadd"> Opcode definitions in
1647 * The Java Virtual Machine Specification</a>
1648 */
1649 public static final short DADD = 99;
1650
1651 /**
1652 * Java VM opcode {@value}.
1653 *
1654 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.isub"> Opcode definitions in
1655 * The Java Virtual Machine Specification</a>
1656 */
1657 public static final short ISUB = 100;
1658
1659 /**
1660 * Java VM opcode {@value}.
1661 *
1662 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lsub"> Opcode definitions in
1663 * The Java Virtual Machine Specification</a>
1664 */
1665 public static final short LSUB = 101;
1666
1667 /**
1668 * Java VM opcode {@value}.
1669 *
1670 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fsub"> Opcode definitions in
1671 * The Java Virtual Machine Specification</a>
1672 */
1673 public static final short FSUB = 102;
1674
1675 /**
1676 * Java VM opcode {@value}.
1677 *
1678 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dsub"> Opcode definitions in
1679 * The Java Virtual Machine Specification</a>
1680 */
1681 public static final short DSUB = 103;
1682
1683 /**
1684 * Java VM opcode {@value}.
1685 *
1686 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.imul"> Opcode definitions in
1687 * The Java Virtual Machine Specification</a>
1688 */
1689 public static final short IMUL = 104;
1690
1691 /**
1692 * Java VM opcode {@value}.
1693 *
1694 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lmul"> Opcode definitions in
1695 * The Java Virtual Machine Specification</a>
1696 */
1697 public static final short LMUL = 105;
1698
1699 /**
1700 * Java VM opcode {@value}.
1701 *
1702 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fmul"> Opcode definitions in
1703 * The Java Virtual Machine Specification</a>
1704 */
1705 public static final short FMUL = 106;
1706
1707 /**
1708 * Java VM opcode {@value}.
1709 *
1710 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dmul"> Opcode definitions in
1711 * The Java Virtual Machine Specification</a>
1712 */
1713 public static final short DMUL = 107;
1714
1715 /**
1716 * Java VM opcode {@value}.
1717 *
1718 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.idiv"> Opcode definitions in
1719 * The Java Virtual Machine Specification</a>
1720 */
1721 public static final short IDIV = 108;
1722
1723 /**
1724 * Java VM opcode {@value}.
1725 *
1726 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldiv"> Opcode definitions in
1727 * The Java Virtual Machine Specification</a>
1728 */
1729 public static final short LDIV = 109;
1730
1731 /**
1732 * Java VM opcode {@value}.
1733 *
1734 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fdiv"> Opcode definitions in
1735 * The Java Virtual Machine Specification</a>
1736 */
1737 public static final short FDIV = 110;
1738
1739 /**
1740 * Java VM opcode {@value}.
1741 *
1742 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ddiv"> Opcode definitions in
1743 * The Java Virtual Machine Specification</a>
1744 */
1745 public static final short DDIV = 111;
1746
1747 /**
1748 * Java VM opcode {@value}.
1749 *
1750 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.irem"> Opcode definitions in
1751 * The Java Virtual Machine Specification</a>
1752 */
1753 public static final short IREM = 112;
1754
1755 /**
1756 * Java VM opcode {@value}.
1757 *
1758 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lrem"> Opcode definitions in
1759 * The Java Virtual Machine Specification</a>
1760 */
1761 public static final short LREM = 113;
1762
1763 /**
1764 * Java VM opcode {@value}.
1765 *
1766 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.frem"> Opcode definitions in
1767 * The Java Virtual Machine Specification</a>
1768 */
1769 public static final short FREM = 114;
1770
1771 /**
1772 * Java VM opcode {@value}.
1773 *
1774 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.drem"> Opcode definitions in
1775 * The Java Virtual Machine Specification</a>
1776 */
1777 public static final short DREM = 115;
1778
1779 /**
1780 * Java VM opcode {@value}.
1781 *
1782 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ineg"> Opcode definitions in
1783 * The Java Virtual Machine Specification</a>
1784 */
1785 public static final short INEG = 116;
1786
1787 /**
1788 * Java VM opcode {@value}.
1789 *
1790 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lneg"> Opcode definitions in
1791 * The Java Virtual Machine Specification</a>
1792 */
1793 public static final short LNEG = 117;
1794
1795 /**
1796 * Java VM opcode {@value}.
1797 *
1798 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fneg"> Opcode definitions in
1799 * The Java Virtual Machine Specification</a>
1800 */
1801 public static final short FNEG = 118;
1802
1803 /**
1804 * Java VM opcode {@value}.
1805 *
1806 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dneg"> Opcode definitions in
1807 * The Java Virtual Machine Specification</a>
1808 */
1809 public static final short DNEG = 119;
1810
1811 /**
1812 * Java VM opcode {@value}.
1813 *
1814 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishl"> Opcode definitions in
1815 * The Java Virtual Machine Specification</a>
1816 */
1817 public static final short ISHL = 120;
1818
1819 /**
1820 * Java VM opcode {@value}.
1821 *
1822 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshl"> Opcode definitions in
1823 * The Java Virtual Machine Specification</a>
1824 */
1825 public static final short LSHL = 121;
1826
1827 /**
1828 * Java VM opcode {@value}.
1829 *
1830 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishr"> Opcode definitions in
1831 * The Java Virtual Machine Specification</a>
1832 */
1833 public static final short ISHR = 122;
1834
1835 /**
1836 * Java VM opcode {@value}.
1837 *
1838 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshr"> Opcode definitions in
1839 * The Java Virtual Machine Specification</a>
1840 */
1841 public static final short LSHR = 123;
1842
1843 /**
1844 * Java VM opcode {@value}.
1845 *
1846 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iushr"> Opcode definitions in
1847 * The Java Virtual Machine Specification</a>
1848 */
1849 public static final short IUSHR = 124;
1850
1851 /**
1852 * Java VM opcode {@value}.
1853 *
1854 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lushr"> Opcode definitions in
1855 * The Java Virtual Machine Specification</a>
1856 */
1857 public static final short LUSHR = 125;
1858
1859 /**
1860 * Java VM opcode {@value}.
1861 *
1862 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iand"> Opcode definitions in
1863 * The Java Virtual Machine Specification</a>
1864 */
1865 public static final short IAND = 126;
1866
1867 /**
1868 * Java VM opcode {@value}.
1869 *
1870 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.land"> Opcode definitions in
1871 * The Java Virtual Machine Specification</a>
1872 */
1873 public static final short LAND = 127;
1874
1875 /**
1876 * Java VM opcode {@value}.
1877 *
1878 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ior"> Opcode definitions in The
1879 * Java Virtual Machine Specification</a>
1880 */
1881 public static final short IOR = 128;
1882
1883 /**
1884 * Java VM opcode {@value}.
1885 *
1886 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lor"> Opcode definitions in The
1887 * Java Virtual Machine Specification</a>
1888 */
1889 public static final short LOR = 129;
1890
1891 /**
1892 * Java VM opcode {@value}.
1893 *
1894 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ixor"> Opcode definitions in
1895 * The Java Virtual Machine Specification</a>
1896 */
1897 public static final short IXOR = 130;
1898
1899 /**
1900 * Java VM opcode {@value}.
1901 *
1902 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lxor"> Opcode definitions in
1903 * The Java Virtual Machine Specification</a>
1904 */
1905 public static final short LXOR = 131;
1906
1907 /**
1908 * Java VM opcode {@value}.
1909 *
1910 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iinc"> Opcode definitions in
1911 * The Java Virtual Machine Specification</a>
1912 */
1913 public static final short IINC = 132;
1914
1915 /**
1916 * Java VM opcode {@value}.
1917 *
1918 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2l"> Opcode definitions in The
1919 * Java Virtual Machine Specification</a>
1920 */
1921 public static final short I2L = 133;
1922
1923 /**
1924 * Java VM opcode {@value}.
1925 *
1926 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2f"> Opcode definitions in The
1927 * Java Virtual Machine Specification</a>
1928 */
1929 public static final short I2F = 134;
1930
1931 /**
1932 * Java VM opcode {@value}.
1933 *
1934 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2d"> Opcode definitions in The
1935 * Java Virtual Machine Specification</a>
1936 */
1937 public static final short I2D = 135;
1938
1939 /**
1940 * Java VM opcode {@value}.
1941 *
1942 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2i"> Opcode definitions in The
1943 * Java Virtual Machine Specification</a>
1944 */
1945 public static final short L2I = 136;
1946
1947 /**
1948 * Java VM opcode {@value}.
1949 *
1950 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2f"> Opcode definitions in The
1951 * Java Virtual Machine Specification</a>
1952 */
1953 public static final short L2F = 137;
1954
1955 /**
1956 * Java VM opcode {@value}.
1957 *
1958 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2d"> Opcode definitions in The
1959 * Java Virtual Machine Specification</a>
1960 */
1961 public static final short L2D = 138;
1962
1963 /**
1964 * Java VM opcode {@value}.
1965 *
1966 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2i"> Opcode definitions in The
1967 * Java Virtual Machine Specification</a>
1968 */
1969 public static final short F2I = 139;
1970
1971 /**
1972 * Java VM opcode {@value}.
1973 *
1974 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2l"> Opcode definitions in The
1975 * Java Virtual Machine Specification</a>
1976 */
1977 public static final short F2L = 140;
1978
1979 /**
1980 * Java VM opcode {@value}.
1981 *
1982 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2d"> Opcode definitions in The
1983 * Java Virtual Machine Specification</a>
1984 */
1985 public static final short F2D = 141;
1986
1987 /**
1988 * Java VM opcode {@value}.
1989 *
1990 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2i"> Opcode definitions in The
1991 * Java Virtual Machine Specification</a>
1992 */
1993 public static final short D2I = 142;
1994
1995 /**
1996 * Java VM opcode {@value}.
1997 *
1998 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2l"> Opcode definitions in The
1999 * Java Virtual Machine Specification</a>
2000 */
2001 public static final short D2L = 143;
2002
2003 /**
2004 * Java VM opcode {@value}.
2005 *
2006 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2f"> Opcode definitions in The
2007 * Java Virtual Machine Specification</a>
2008 */
2009 public static final short D2F = 144;
2010
2011 /**
2012 * Java VM opcode {@value}.
2013 *
2014 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2b"> Opcode definitions in The
2015 * Java Virtual Machine Specification</a>
2016 */
2017 public static final short I2B = 145;
2018
2019 /**
2020 * Java VM opcode {@value}.
2021 *
2022 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> Opcode definitions in The
2023 * Java Virtual Machine Specification</a>
2024 */
2025 public static final short INT2BYTE = 145; // Old notation
2026
2027 /**
2028 * Java VM opcode {@value}.
2029 *
2030 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2c"> Opcode definitions in The
2031 * Java Virtual Machine Specification</a>
2032 */
2033 public static final short I2C = 146;
2034
2035 /**
2036 * Java VM opcode {@value}.
2037 *
2038 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> Opcode definitions in The
2039 * Java Virtual Machine Specification</a>
2040 */
2041 public static final short INT2CHAR = 146; // Old notation
2042
2043 /**
2044 * Java VM opcode {@value}.
2045 *
2046 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2s"> Opcode definitions in The
2047 * Java Virtual Machine Specification</a>
2048 */
2049 public static final short I2S = 147;
2050
2051 /**
2052 * Java VM opcode {@value}.
2053 *
2054 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> Opcode definitions in The
2055 * Java Virtual Machine Specification</a>
2056 */
2057 public static final short INT2SHORT = 147; // Old notation
2058
2059 /**
2060 * Java VM opcode {@value}.
2061 *
2062 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lcmp"> Opcode definitions in
2063 * The Java Virtual Machine Specification</a>
2064 */
2065 public static final short LCMP = 148;
2066
2067 /**
2068 * Java VM opcode {@value}.
2069 *
2070 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpl"> Opcode definitions in
2071 * The Java Virtual Machine Specification</a>
2072 */
2073 public static final short FCMPL = 149;
2074
2075 /**
2076 * Java VM opcode {@value}.
2077 *
2078 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpg"> Opcode definitions in
2079 * The Java Virtual Machine Specification</a>
2080 */
2081 public static final short FCMPG = 150;
2082
2083 /**
2084 * Java VM opcode {@value}.
2085 *
2086 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpl"> Opcode definitions in
2087 * The Java Virtual Machine Specification</a>
2088 */
2089 public static final short DCMPL = 151;
2090
2091 /**
2092 * Java VM opcode {@value}.
2093 *
2094 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpg"> Opcode definitions in
2095 * The Java Virtual Machine Specification</a>
2096 */
2097 public static final short DCMPG = 152;
2098
2099 /**
2100 * Java VM opcode {@value}.
2101 *
2102 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifeq"> Opcode definitions in
2103 * The Java Virtual Machine Specification</a>
2104 */
2105 public static final short IFEQ = 153;
2106
2107 /**
2108 * Java VM opcode {@value}.
2109 *
2110 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifne"> Opcode definitions in
2111 * The Java Virtual Machine Specification</a>
2112 */
2113 public static final short IFNE = 154;
2114
2115 /**
2116 * Java VM opcode {@value}.
2117 *
2118 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iflt"> Opcode definitions in
2119 * The Java Virtual Machine Specification</a>
2120 */
2121 public static final short IFLT = 155;
2122
2123 /**
2124 * Java VM opcode {@value}.
2125 *
2126 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifge"> Opcode definitions in
2127 * The Java Virtual Machine Specification</a>
2128 */
2129 public static final short IFGE = 156;
2130
2131 /**
2132 * Java VM opcode {@value}.
2133 *
2134 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifgt"> Opcode definitions in
2135 * The Java Virtual Machine Specification</a>
2136 */
2137 public static final short IFGT = 157;
2138
2139 /**
2140 * Java VM opcode {@value}.
2141 *
2142 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifle"> Opcode definitions in
2143 * The Java Virtual Machine Specification</a>
2144 */
2145 public static final short IFLE = 158;
2146
2147 /**
2148 * Java VM opcode {@value}.
2149 *
2150 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
2151 * definitions in The Java Virtual Machine Specification</a>
2152 */
2153 public static final short IF_ICMPEQ = 159;
2154
2155 /**
2156 * Java VM opcode {@value}.
2157 *
2158 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
2159 * definitions in The Java Virtual Machine Specification</a>
2160 */
2161 public static final short IF_ICMPNE = 160;
2162
2163 /**
2164 * Java VM opcode {@value}.
2165 *
2166 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
2167 * definitions in The Java Virtual Machine Specification</a>
2168 */
2169 public static final short IF_ICMPLT = 161;
2170
2171 /**
2172 * Java VM opcode {@value}.
2173 *
2174 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
2175 * definitions in The Java Virtual Machine Specification</a>
2176 */
2177 public static final short IF_ICMPGE = 162;
2178
2179 /**
2180 * Java VM opcode {@value}.
2181 *
2182 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
2183 * definitions in The Java Virtual Machine Specification</a>
2184 */
2185 public static final short IF_ICMPGT = 163;
2186
2187 /**
2188 * Java VM opcode {@value}.
2189 *
2190 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond"> Opcode
2191 * definitions in The Java Virtual Machine Specification</a>
2192 */
2193 public static final short IF_ICMPLE = 164;
2194
2195 /**
2196 * Java VM opcode {@value}.
2197 *
2198 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond"> Opcode
2199 * definitions in The Java Virtual Machine Specification</a>
2200 */
2201 public static final short IF_ACMPEQ = 165;
2202
2203 /**
2204 * Java VM opcode {@value}.
2205 *
2206 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond"> Opcode
2207 * definitions in The Java Virtual Machine Specification</a>
2208 */
2209 public static final short IF_ACMPNE = 166;
2210
2211 /**
2212 * Java VM opcode {@value}.
2213 *
2214 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto"> Opcode definitions in
2215 * The Java Virtual Machine Specification</a>
2216 */
2217 public static final short GOTO = 167;
2218
2219 /**
2220 * Java VM opcode {@value}.
2221 *
2222 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr"> Opcode definitions in The
2223 * Java Virtual Machine Specification</a>
2224 */
2225 public static final short JSR = 168;
2226
2227 /**
2228 * Java VM opcode {@value}.
2229 *
2230 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ret"> Opcode definitions in The
2231 * Java Virtual Machine Specification</a>
2232 */
2233 public static final short RET = 169;
2234
2235 /**
2236 * Java VM opcode {@value}.
2237 *
2238 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.tableswitch"> Opcode
2239 * definitions in The Java Virtual Machine Specification</a>
2240 */
2241 public static final short TABLESWITCH = 170;
2242
2243 /**
2244 * Java VM opcode {@value}.
2245 *
2246 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lookupswitch"> Opcode
2247 * definitions in The Java Virtual Machine Specification</a>
2248 */
2249 public static final short LOOKUPSWITCH = 171;
2250
2251 /**
2252 * Java VM opcode {@value}.
2253 *
2254 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ireturn"> Opcode definitions in
2255 * The Java Virtual Machine Specification</a>
2256 */
2257 public static final short IRETURN = 172;
2258
2259 /**
2260 * Java VM opcode {@value}.
2261 *
2262 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lreturn"> Opcode definitions in
2263 * The Java Virtual Machine Specification</a>
2264 */
2265 public static final short LRETURN = 173;
2266
2267 /**
2268 * Java VM opcode {@value}.
2269 *
2270 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.freturn"> Opcode definitions in
2271 * The Java Virtual Machine Specification</a>
2272 */
2273 public static final short FRETURN = 174;
2274
2275 /**
2276 * Java VM opcode {@value}.
2277 *
2278 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dreturn"> Opcode definitions in
2279 * The Java Virtual Machine Specification</a>
2280 */
2281 public static final short DRETURN = 175;
2282
2283 /**
2284 * Java VM opcode {@value}.
2285 *
2286 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.areturn"> Opcode definitions in
2287 * The Java Virtual Machine Specification</a>
2288 */
2289 public static final short ARETURN = 176;
2290
2291 /**
2292 * Java VM opcode {@value}.
2293 *
2294 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.return"> Opcode definitions in
2295 * The Java Virtual Machine Specification</a>
2296 */
2297 public static final short RETURN = 177;
2298
2299 /**
2300 * Java VM opcode {@value}.
2301 *
2302 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getstatic"> Opcode definitions
2303 * in The Java Virtual Machine Specification</a>
2304 */
2305 public static final short GETSTATIC = 178;
2306
2307 /**
2308 * Java VM opcode {@value}.
2309 *
2310 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putstatic"> Opcode definitions
2311 * in The Java Virtual Machine Specification</a>
2312 */
2313 public static final short PUTSTATIC = 179;
2314
2315 /**
2316 * Java VM opcode {@value}.
2317 *
2318 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getfield"> Opcode definitions
2319 * in The Java Virtual Machine Specification</a>
2320 */
2321 public static final short GETFIELD = 180;
2322
2323 /**
2324 * Java VM opcode {@value}.
2325 *
2326 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putfield"> Opcode definitions
2327 * in The Java Virtual Machine Specification</a>
2328 */
2329 public static final short PUTFIELD = 181;
2330
2331 /**
2332 * Java VM opcode {@value}.
2333 *
2334 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokevirtual"> Opcode
2335 * definitions in The Java Virtual Machine Specification</a>
2336 */
2337 public static final short INVOKEVIRTUAL = 182;
2338
2339 /**
2340 * Java VM opcode {@value}.
2341 *
2342 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokespecial"> Opcode
2343 * definitions in The Java Virtual Machine Specification</a>
2344 */
2345 public static final short INVOKESPECIAL = 183;
2346
2347 /**
2348 * Java VM opcode {@value}.
2349 *
2350 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5"> Opcode definitions in The
2351 * Java Virtual Machine Specification</a>
2352 */
2353 public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0
2354
2355 /**
2356 * Java VM opcode {@value}.
2357 *
2358 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokestatic"> Opcode
2359 * definitions in The Java Virtual Machine Specification</a>
2360 */
2361 public static final short INVOKESTATIC = 184;
2362
2363 /**
2364 * Java VM opcode {@value}.
2365 *
2366 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface"> Opcode
2367 * definitions in The Java Virtual Machine Specification</a>
2368 */
2369 public static final short INVOKEINTERFACE = 185;
2370
2371 /**
2372 * Java VM opcode {@value}.
2373 *
2374 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokedynamic"> Opcode
2375 * definitions in The Java Virtual Machine Specification</a>
2376 */
2377 public static final short INVOKEDYNAMIC = 186;
2378
2379 /**
2380 * Java VM opcode {@value}.
2381 *
2382 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.new"> Opcode definitions in The
2383 * Java Virtual Machine Specification</a>
2384 */
2385 public static final short NEW = 187;
2386
2387 /**
2388 * Java VM opcode {@value}.
2389 *
2390 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.newarray"> Opcode definitions
2391 * in The Java Virtual Machine Specification</a>
2392 */
2393 public static final short NEWARRAY = 188;
2394
2395 /**
2396 * Java VM opcode {@value}.
2397 *
2398 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.anewarray"> Opcode definitions
2399 * in The Java Virtual Machine Specification</a>
2400 */
2401 public static final short ANEWARRAY = 189;
2402
2403 /**
2404 * Java VM opcode {@value}.
2405 *
2406 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.arraylength"> Opcode
2407 * definitions in The Java Virtual Machine Specification</a>
2408 */
2409 public static final short ARRAYLENGTH = 190;
2410
2411 /**
2412 * Java VM opcode {@value}.
2413 *
2414 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.athrow"> Opcode definitions in
2415 * The Java Virtual Machine Specification</a>
2416 */
2417 public static final short ATHROW = 191;
2418
2419 /**
2420 * Java VM opcode {@value}.
2421 *
2422 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.checkcast"> Opcode definitions
2423 * in The Java Virtual Machine Specification</a>
2424 */
2425 public static final short CHECKCAST = 192;
2426
2427 /**
2428 * Java VM opcode {@value}.
2429 *
2430 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.instanceof"> Opcode definitions
2431 * in The Java Virtual Machine Specification</a>
2432 */
2433 public static final short INSTANCEOF = 193;
2434
2435 /**
2436 * Java VM opcode {@value}.
2437 *
2438 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorenter"> Opcode
2439 * definitions in The Java Virtual Machine Specification</a>
2440 */
2441 public static final short MONITORENTER = 194;
2442
2443 /**
2444 * Java VM opcode {@value}.
2445 *
2446 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorexit"> Opcode
2447 * definitions in The Java Virtual Machine Specification</a>
2448 */
2449 public static final short MONITOREXIT = 195;
2450
2451 /**
2452 * Java VM opcode {@value}.
2453 *
2454 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.wide"> Opcode definitions in
2455 * The Java Virtual Machine Specification</a>
2456 */
2457 public static final short WIDE = 196;
2458
2459 /**
2460 * Java VM opcode {@value}.
2461 *
2462 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.multianewarray"> Opcode
2463 * definitions in The Java Virtual Machine Specification</a>
2464 */
2465 public static final short MULTIANEWARRAY = 197;
2466
2467 /**
2468 * Java VM opcode {@value}.
2469 *
2470 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnull"> Opcode definitions in
2471 * The Java Virtual Machine Specification</a>
2472 */
2473 public static final short IFNULL = 198;
2474
2475 /**
2476 * Java VM opcode {@value}.
2477 *
2478 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnonnull"> Opcode definitions
2479 * in The Java Virtual Machine Specification</a>
2480 */
2481 public static final short IFNONNULL = 199;
2482
2483 /**
2484 * Java VM opcode {@value}.
2485 *
2486 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto_w"> Opcode definitions in
2487 * The Java Virtual Machine Specification</a>
2488 */
2489 public static final short GOTO_W = 200;
2490
2491 /**
2492 * Java VM opcode {@value}.
2493 *
2494 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr_w"> Opcode definitions in
2495 * The Java Virtual Machine Specification</a>
2496 */
2497 public static final short JSR_W = 201;
2498
2499 /**
2500 * JVM internal opcode {@value}.
2501 *
2502 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> Reserved opcodes in the Java
2503 * Virtual Machine Specification</a>
2504 */
2505 public static final short BREAKPOINT = 202;
2506
2507 /**
2508 * JVM internal opcode {@value}.
2509 *
2510 * @see <a href=
2511 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2512 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2513 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2514 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2515 */
2516 public static final short LDC_QUICK = 203;
2517
2518 /**
2519 * JVM internal opcode {@value}.
2520 *
2521 * @see <a href=
2522 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2523 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2524 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2525 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2526 */
2527 public static final short LDC_W_QUICK = 204;
2528
2529 /**
2530 * JVM internal opcode {@value}.
2531 *
2532 * @see <a href=
2533 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2534 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2535 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2536 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2537 */
2538 public static final short LDC2_W_QUICK = 205;
2539
2540 /**
2541 * JVM internal opcode {@value}.
2542 *
2543 * @see <a href=
2544 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2545 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2546 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2547 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2548 */
2549 public static final short GETFIELD_QUICK = 206;
2550
2551 /**
2552 * JVM internal opcode {@value}.
2553 *
2554 * @see <a href=
2555 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2556 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2557 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2558 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2559 */
2560 public static final short PUTFIELD_QUICK = 207;
2561
2562 /**
2563 * JVM internal opcode {@value}.
2564 *
2565 * @see <a href=
2566 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2567 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2568 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2569 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2570 */
2571 public static final short GETFIELD2_QUICK = 208;
2572
2573 /**
2574 * JVM internal opcode {@value}.
2575 *
2576 * @see <a href=
2577 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2578 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2579 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2580 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2581 */
2582 public static final short PUTFIELD2_QUICK = 209;
2583
2584 /**
2585 * JVM internal opcode {@value}.
2586 *
2587 * @see <a href=
2588 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2589 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2590 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2591 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2592 */
2593 public static final short GETSTATIC_QUICK = 210;
2594
2595 /**
2596 * JVM internal opcode {@value}.
2597 *
2598 * @see <a href=
2599 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2600 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2601 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2602 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2603 */
2604 public static final short PUTSTATIC_QUICK = 211;
2605
2606 /**
2607 * JVM internal opcode {@value}.
2608 *
2609 * @see <a href=
2610 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2611 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2612 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2613 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2614 */
2615 public static final short GETSTATIC2_QUICK = 212;
2616
2617 /**
2618 * JVM internal opcode {@value}.
2619 *
2620 * @see <a href=
2621 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2622 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2623 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2624 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2625 */
2626 public static final short PUTSTATIC2_QUICK = 213;
2627
2628 /**
2629 * JVM internal opcode {@value}.
2630 *
2631 * @see <a href=
2632 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2633 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2634 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2635 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2636 */
2637 public static final short INVOKEVIRTUAL_QUICK = 214;
2638
2639 /**
2640 * JVM internal opcode {@value}.
2641 *
2642 * @see <a href=
2643 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2644 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2645 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2646 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2647 */
2648 public static final short INVOKENONVIRTUAL_QUICK = 215;
2649
2650 /**
2651 * JVM internal opcode {@value}.
2652 *
2653 * @see <a href=
2654 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2655 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2656 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2657 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2658 */
2659 public static final short INVOKESUPER_QUICK = 216;
2660
2661 /**
2662 * JVM internal opcode {@value}.
2663 *
2664 * @see <a href=
2665 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2666 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2667 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2668 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2669 */
2670 public static final short INVOKESTATIC_QUICK = 217;
2671
2672 /**
2673 * JVM internal opcode {@value}.
2674 *
2675 * @see <a href=
2676 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2677 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2678 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2679 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2680 */
2681 public static final short INVOKEINTERFACE_QUICK = 218;
2682
2683 /**
2684 * JVM internal opcode {@value}.
2685 *
2686 * @see <a href=
2687 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2688 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2689 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2690 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2691 */
2692 public static final short INVOKEVIRTUALOBJECT_QUICK = 219;
2693
2694 /**
2695 * JVM internal opcode {@value}.
2696 *
2697 * @see <a href=
2698 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2699 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2700 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2701 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2702 */
2703 public static final short NEW_QUICK = 221;
2704
2705 /**
2706 * JVM internal opcode {@value}.
2707 *
2708 * @see <a href=
2709 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2710 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2711 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2712 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2713 */
2714 public static final short ANEWARRAY_QUICK = 222;
2715
2716 /**
2717 * JVM internal opcode {@value}.
2718 *
2719 * @see <a href=
2720 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2721 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2722 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2723 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2724 */
2725 public static final short MULTIANEWARRAY_QUICK = 223;
2726
2727 /**
2728 * JVM internal opcode {@value}.
2729 *
2730 * @see <a href=
2731 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2732 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2733 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2734 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2735 */
2736 public static final short CHECKCAST_QUICK = 224;
2737
2738 /**
2739 * JVM internal opcode {@value}.
2740 *
2741 * @see <a href=
2742 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2743 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2744 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2745 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2746 */
2747 public static final short INSTANCEOF_QUICK = 225;
2748
2749 /**
2750 * JVM internal opcode {@value}.
2751 *
2752 * @see <a href=
2753 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2754 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2755 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2756 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2757 */
2758 public static final short INVOKEVIRTUAL_QUICK_W = 226;
2759
2760 /**
2761 * JVM internal opcode {@value}.
2762 *
2763 * @see <a href=
2764 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2765 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2766 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2767 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2768 */
2769 public static final short GETFIELD_QUICK_W = 227;
2770
2771 /**
2772 * JVM internal opcode {@value}.
2773 *
2774 * @see <a href=
2775 * "https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
2776 * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
2777 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885"> Why the _quick
2778 * opcodes were removed from the second version of the Java Virtual Machine Specification.</a>
2779 */
2780 public static final short PUTFIELD_QUICK_W = 228;
2781
2782 /**
2783 * JVM internal opcode {@value}.
2784 *
2785 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> Reserved opcodes in the Java
2786 * Virtual Machine Specification</a>
2787 */
2788 public static final short IMPDEP1 = 254;
2789
2790 /**
2791 * JVM internal opcode {@value}.
2792 *
2793 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2"> Reserved opcodes in the Java
2794 * Virtual Machine Specification</a>
2795 */
2796 public static final short IMPDEP2 = 255;
2797
2798 /**
2799 * BCEL virtual instruction for pushing an arbitrary data type onto the stack: {@value}. Will be converted to the appropriate JVM
2800 * opcode when the class is dumped.
2801 */
2802 public static final short PUSH = 4711;
2803
2804 /**
2805 * BCEL virtual instruction for either LOOKUPSWITCH or TABLESWITCH: {@value}. Will be converted to the appropriate JVM opcode when
2806 * the class is dumped.
2807 */
2808 public static final short SWITCH = 4712;
2809
2810 /**
2811 * Illegal opcode: {@value}.
2812 */
2813 public static final short UNDEFINED = -1;
2814
2815 /**
2816 * Illegal opcode: {@value}.
2817 */
2818 public static final short UNPREDICTABLE = -2;
2819
2820 /**
2821 * Illegal opcode: {@value}.
2822 */
2823 public static final short RESERVED = -3;
2824
2825 /**
2826 * Mnemonic for an illegal opcode: {@value}.
2827 */
2828 public static final String ILLEGAL_OPCODE = "<illegal opcode>";
2829
2830 /**
2831 * Mnemonic for an illegal type: {@value}.
2832 */
2833 public static final String ILLEGAL_TYPE = "<illegal type>";
2834
2835 /**
2836 * Boolean data type: {@value}.
2837 *
2838 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
2839 * the Java Virtual Machine Specification</a>
2840 */
2841 public static final byte T_BOOLEAN = 4;
2842
2843 /**
2844 * Char data type: {@value}.
2845 *
2846 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
2847 * the Java Virtual Machine Specification</a>
2848 */
2849 public static final byte T_CHAR = 5;
2850
2851 /**
2852 * Float data type: {@value}.
2853 *
2854 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
2855 * the Java Virtual Machine Specification</a>
2856 */
2857 public static final byte T_FLOAT = 6;
2858
2859 /**
2860 * Double data type: {@value}.
2861 *
2862 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
2863 * the Java Virtual Machine Specification</a>
2864 */
2865 public static final byte T_DOUBLE = 7;
2866
2867 /**
2868 * Byte data type: {@value}.
2869 *
2870 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
2871 * the Java Virtual Machine Specification</a>
2872 */
2873 public static final byte T_BYTE = 8;
2874
2875 /**
2876 * Short data type: {@value}.
2877 *
2878 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
2879 * the Java Virtual Machine Specification</a>
2880 */
2881 public static final byte T_SHORT = 9;
2882
2883 /**
2884 * Int data type: {@value}.
2885 *
2886 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
2887 * the Java Virtual Machine Specification</a>
2888 */
2889 public static final byte T_INT = 10;
2890
2891 /**
2892 * Long data type: {@value}.
2893 *
2894 * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P"> Static Constraints in
2895 * the Java Virtual Machine Specification</a>
2896 */
2897 public static final byte T_LONG = 11;
2898
2899 /** Void data type (non-standard). */
2900 public static final byte T_VOID = 12; // Non-standard
2901
2902 /** Array data type. */
2903 public static final byte T_ARRAY = 13;
2904
2905 /** Object data type. */
2906 public static final byte T_OBJECT = 14;
2907
2908 /** Reference data type (deprecated). */
2909 public static final byte T_REFERENCE = 14; // Deprecated
2910
2911 /** Unknown data type. */
2912 public static final byte T_UNKNOWN = 15;
2913
2914 /** Address data type. */
2915 public static final byte T_ADDRESS = 16;
2916
2917 /**
2918 * The primitive type names corresponding to the T_XX constants, for example, TYPE_NAMES[T_INT] = "int"
2919 */
2920 private static final String[] TYPE_NAMES = {ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, "boolean", "char", "float", "double", "byte", "short",
2921 "int", "long", "void", "array", "object", "unknown", "address"};
2922
2923 /**
2924 * The primitive class names corresponding to the T_XX constants, for example, CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
2925 */
2926 private static final String[] CLASS_TYPE_NAMES = {ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, "java.lang.Boolean", "java.lang.Character",
2927 "java.lang.Float", "java.lang.Double", "java.lang.Byte", "java.lang.Short", "java.lang.Integer", "java.lang.Long", "java.lang.Void", ILLEGAL_TYPE,
2928 ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE};
2929
2930 /**
2931 * The signature characters corresponding to primitive types, for example, SHORT_TYPE_NAMES[T_INT] = "I"
2932 */
2933 public static final String[] SHORT_TYPE_NAMES = {ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, "Z", "C", "F", "D", "B", "S", "I", "J", "V",
2934 ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE};
2935
2936 /**
2937 * Number of byte code operands for each opcode, i.e., number of bytes after the tag byte itself. Indexed by opcode, so
2938 * NO_OF_OPERANDS[BIPUSH] = the number of operands for a bipush instruction.
2939 */
2940 static final short[] NO_OF_OPERANDS = {0/* nop */, 0/* aconst_null */, 0/* iconst_m1 */, 0/* iconst_0 */, 0/* iconst_1 */, 0/* iconst_2 */,
2941 0/* iconst_3 */, 0/* iconst_4 */, 0/* iconst_5 */, 0/* lconst_0 */, 0/* lconst_1 */, 0/* fconst_0 */, 0/* fconst_1 */, 0/* fconst_2 */, 0/* dconst_0 */,
2942 0/* dconst_1 */, 1/* bipush */, 2/* sipush */, 1/* ldc */, 2/* ldc_w */, 2/* ldc2_w */, 1/* iload */, 1/* lload */, 1/* fload */, 1/* dload */,
2943 1/* aload */, 0/* iload_0 */, 0/* iload_1 */, 0/* iload_2 */, 0/* iload_3 */, 0/* lload_0 */, 0/* lload_1 */, 0/* lload_2 */, 0/* lload_3 */,
2944 0/* fload_0 */, 0/* fload_1 */, 0/* fload_2 */, 0/* fload_3 */, 0/* dload_0 */, 0/* dload_1 */, 0/* dload_2 */, 0/* dload_3 */, 0/* aload_0 */,
2945 0/* aload_1 */, 0/* aload_2 */, 0/* aload_3 */, 0/* iaload */, 0/* laload */, 0/* faload */, 0/* daload */, 0/* aaload */, 0/* baload */, 0/* caload */,
2946 0/* saload */, 1/* istore */, 1/* lstore */, 1/* fstore */, 1/* dstore */, 1/* astore */, 0/* istore_0 */, 0/* istore_1 */, 0/* istore_2 */,
2947 0/* istore_3 */, 0/* lstore_0 */, 0/* lstore_1 */, 0/* lstore_2 */, 0/* lstore_3 */, 0/* fstore_0 */, 0/* fstore_1 */, 0/* fstore_2 */, 0/* fstore_3 */,
2948 0/* dstore_0 */, 0/* dstore_1 */, 0/* dstore_2 */, 0/* dstore_3 */, 0/* astore_0 */, 0/* astore_1 */, 0/* astore_2 */, 0/* astore_3 */, 0/* iastore */,
2949 0/* lastore */, 0/* fastore */, 0/* dastore */, 0/* aastore */, 0/* bastore */, 0/* castore */, 0/* sastore */, 0/* pop */, 0/* pop2 */, 0/* dup */,
2950 0/* dup_x1 */, 0/* dup_x2 */, 0/* dup2 */, 0/* dup2_x1 */, 0/* dup2_x2 */, 0/* swap */, 0/* iadd */, 0/* ladd */, 0/* fadd */, 0/* dadd */, 0/* isub */,
2951 0/* lsub */, 0/* fsub */, 0/* dsub */, 0/* imul */, 0/* lmul */, 0/* fmul */, 0/* dmul */, 0/* idiv */, 0/* ldiv */, 0/* fdiv */, 0/* ddiv */,
2952 0/* irem */, 0/* lrem */, 0/* frem */, 0/* drem */, 0/* ineg */, 0/* lneg */, 0/* fneg */, 0/* dneg */, 0/* ishl */, 0/* lshl */, 0/* ishr */,
2953 0/* lshr */, 0/* iushr */, 0/* lushr */, 0/* iand */, 0/* land */, 0/* ior */, 0/* lor */, 0/* ixor */, 0/* lxor */, 2/* iinc */, 0/* i2l */,
2954 0/* i2f */, 0/* i2d */, 0/* l2i */, 0/* l2f */, 0/* l2d */, 0/* f2i */, 0/* f2l */, 0/* f2d */, 0/* d2i */, 0/* d2l */, 0/* d2f */, 0/* i2b */,
2955 0/* i2c */, 0/* i2s */, 0/* lcmp */, 0/* fcmpl */, 0/* fcmpg */, 0/* dcmpl */, 0/* dcmpg */, 2/* ifeq */, 2/* ifne */, 2/* iflt */, 2/* ifge */,
2956 2/* ifgt */, 2/* ifle */, 2/* if_icmpeq */, 2/* if_icmpne */, 2/* if_icmplt */, 2/* if_icmpge */, 2/* if_icmpgt */, 2/* if_icmple */, 2/* if_acmpeq */,
2957 2/* if_acmpne */, 2/* goto */, 2/* jsr */, 1/* ret */, UNPREDICTABLE/* tableswitch */, UNPREDICTABLE/* lookupswitch */, 0/* ireturn */, 0/* lreturn */,
2958 0/* freturn */, 0/* dreturn */, 0/* areturn */, 0/* return */, 2/* getstatic */, 2/* putstatic */, 2/* getfield */, 2/* putfield */,
2959 2/* invokevirtual */, 2/* invokespecial */, 2/* invokestatic */, 4/* invokeinterface */, 4/* invokedynamic */, 2/* new */, 1/* newarray */,
2960 2/* anewarray */, 0/* arraylength */, 0/* athrow */, 2/* checkcast */, 2/* instanceof */, 0/* monitorenter */, 0/* monitorexit */,
2961 UNPREDICTABLE/* wide */, 3/* multianewarray */, 2/* ifnull */, 2/* ifnonnull */, 4/* goto_w */, 4/* jsr_w */, 0/* breakpoint */, UNDEFINED, UNDEFINED,
2962 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
2963 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
2964 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
2965 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, RESERVED/* impdep1 */,
2966 RESERVED/* impdep2 */
2967 };
2968
2969 /**
2970 * How the byte code operands are to be interpreted for each opcode. Indexed by opcode. TYPE_OF_OPERANDS[ILOAD] = an
2971 * array of shorts describing the data types for the instruction.
2972 */
2973 static final short[][] TYPE_OF_OPERANDS = {{}/* nop */, {}/* aconst_null */, {}/* iconst_m1 */, {}/* iconst_0 */, {}/* iconst_1 */,
2974 {}/* iconst_2 */, {}/* iconst_3 */, {}/* iconst_4 */, {}/* iconst_5 */, {}/* lconst_0 */, {}/* lconst_1 */, {}/* fconst_0 */, {}/* fconst_1 */,
2975 {}/* fconst_2 */, {}/* dconst_0 */, {}/* dconst_1 */, {T_BYTE}/* bipush */, {T_SHORT}/* sipush */, {T_BYTE}/* ldc */, {T_SHORT}/* ldc_w */,
2976 {T_SHORT}/* ldc2_w */, {T_BYTE}/* iload */, {T_BYTE}/* lload */, {T_BYTE}/* fload */, {T_BYTE}/* dload */, {T_BYTE}/* aload */, {}/* iload_0 */,
2977 {}/* iload_1 */, {}/* iload_2 */, {}/* iload_3 */, {}/* lload_0 */, {}/* lload_1 */, {}/* lload_2 */, {}/* lload_3 */, {}/* fload_0 */, {}/* fload_1 */,
2978 {}/* fload_2 */, {}/* fload_3 */, {}/* dload_0 */, {}/* dload_1 */, {}/* dload_2 */, {}/* dload_3 */, {}/* aload_0 */, {}/* aload_1 */, {}/* aload_2 */,
2979 {}/* aload_3 */, {}/* iaload */, {}/* laload */, {}/* faload */, {}/* daload */, {}/* aaload */, {}/* baload */, {}/* caload */, {}/* saload */,
2980 {T_BYTE}/* istore */, {T_BYTE}/* lstore */, {T_BYTE}/* fstore */, {T_BYTE}/* dstore */, {T_BYTE}/* astore */, {}/* istore_0 */, {}/* istore_1 */,
2981 {}/* istore_2 */, {}/* istore_3 */, {}/* lstore_0 */, {}/* lstore_1 */, {}/* lstore_2 */, {}/* lstore_3 */, {}/* fstore_0 */, {}/* fstore_1 */,
2982 {}/* fstore_2 */, {}/* fstore_3 */, {}/* dstore_0 */, {}/* dstore_1 */, {}/* dstore_2 */, {}/* dstore_3 */, {}/* astore_0 */, {}/* astore_1 */,
2983 {}/* astore_2 */, {}/* astore_3 */, {}/* iastore */, {}/* lastore */, {}/* fastore */, {}/* dastore */, {}/* aastore */, {}/* bastore */,
2984 {}/* castore */, {}/* sastore */, {}/* pop */, {}/* pop2 */, {}/* dup */, {}/* dup_x1 */, {}/* dup_x2 */, {}/* dup2 */, {}/* dup2_x1 */,
2985 {}/* dup2_x2 */, {}/* swap */, {}/* iadd */, {}/* ladd */, {}/* fadd */, {}/* dadd */, {}/* isub */, {}/* lsub */, {}/* fsub */, {}/* dsub */,
2986 {}/* imul */, {}/* lmul */, {}/* fmul */, {}/* dmul */, {}/* idiv */, {}/* ldiv */, {}/* fdiv */, {}/* ddiv */, {}/* irem */, {}/* lrem */,
2987 {}/* frem */, {}/* drem */, {}/* ineg */, {}/* lneg */, {}/* fneg */, {}/* dneg */, {}/* ishl */, {}/* lshl */, {}/* ishr */, {}/* lshr */,
2988 {}/* iushr */, {}/* lushr */, {}/* iand */, {}/* land */, {}/* ior */, {}/* lor */, {}/* ixor */, {}/* lxor */, {T_BYTE, T_BYTE}/* iinc */, {}/* i2l */,
2989 {}/* i2f */, {}/* i2d */, {}/* l2i */, {}/* l2f */, {}/* l2d */, {}/* f2i */, {}/* f2l */, {}/* f2d */, {}/* d2i */, {}/* d2l */, {}/* d2f */,
2990 {}/* i2b */, {}/* i2c */, {}/* i2s */, {}/* lcmp */, {}/* fcmpl */, {}/* fcmpg */, {}/* dcmpl */, {}/* dcmpg */, {T_SHORT}/* ifeq */,
2991 {T_SHORT}/* ifne */, {T_SHORT}/* iflt */, {T_SHORT}/* ifge */, {T_SHORT}/* ifgt */, {T_SHORT}/* ifle */, {T_SHORT}/* if_icmpeq */,
2992 {T_SHORT}/* if_icmpne */, {T_SHORT}/* if_icmplt */, {T_SHORT}/* if_icmpge */, {T_SHORT}/* if_icmpgt */, {T_SHORT}/* if_icmple */,
2993 {T_SHORT}/* if_acmpeq */, {T_SHORT}/* if_acmpne */, {T_SHORT}/* goto */, {T_SHORT}/* jsr */, {T_BYTE}/* ret */, {}/* tableswitch */,
2994 {}/* lookupswitch */, {}/* ireturn */, {}/* lreturn */, {}/* freturn */, {}/* dreturn */, {}/* areturn */, {}/* return */, {T_SHORT}/* getstatic */,
2995 {T_SHORT}/* putstatic */, {T_SHORT}/* getfield */, {T_SHORT}/* putfield */, {T_SHORT}/* invokevirtual */, {T_SHORT}/* invokespecial */,
2996 {T_SHORT}/* invokestatic */, {T_SHORT, T_BYTE, T_BYTE}/* invokeinterface */, {T_SHORT, T_BYTE, T_BYTE}/* invokedynamic */, {T_SHORT}/* new */,
2997 {T_BYTE}/* newarray */, {T_SHORT}/* anewarray */, {}/* arraylength */, {}/* athrow */, {T_SHORT}/* checkcast */, {T_SHORT}/* instanceof */,
2998 {}/* monitorenter */, {}/* monitorexit */, {T_BYTE}/* wide */, {T_SHORT, T_BYTE}/* multianewarray */, {T_SHORT}/* ifnull */, {T_SHORT}/* ifnonnull */,
2999 {T_INT}/* goto_w */, {T_INT}/* jsr_w */, {}/* breakpoint */, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
3000 {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}/* impdep1 */, {}/* impdep2 */
3001 };
3002
3003 /**
3004 * Names of opcodes. Indexed by opcode. OPCODE_NAMES[ALOAD] = "aload".
3005 */
3006 static final String[] OPCODE_NAMES = {"nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1", "iconst_2", "iconst_3", "iconst_4", "iconst_5",
3007 "lconst_0", "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0", "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload", "lload",
3008 "fload", "dload", "aload", "iload_0", "iload_1", "iload_2", "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0", "fload_1", "fload_2",
3009 "fload_3", "dload_0", "dload_1", "dload_2", "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload", "laload", "faload", "daload", "aaload",
3010 "baload", "caload", "saload", "istore", "lstore", "fstore", "dstore", "astore", "istore_0", "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1",
3011 "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2", "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3", "astore_0", "astore_1",
3012 "astore_2", "astore_3", "iastore", "lastore", "fastore", "dastore", "aastore", "bastore", "castore", "sastore", "pop", "pop2", "dup", "dup_x1",
3013 "dup_x2", "dup2", "dup2_x1", "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub", "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv",
3014 "ldiv", "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg", "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr", "iand",
3015 "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f", "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f", "i2b", "i2c", "i2s",
3016 "lcmp", "fcmpl", "fcmpg", "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle", "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge",
3017 "if_icmpgt", "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret", "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn", "dreturn",
3018 "areturn", "return", "getstatic", "putstatic", "getfield", "putfield", "invokevirtual", "invokespecial", "invokestatic", "invokeinterface",
3019 "invokedynamic", "new", "newarray", "anewarray", "arraylength", "athrow", "checkcast", "instanceof", "monitorenter", "monitorexit", "wide",
3020 "multianewarray", "ifnull", "ifnonnull", "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
3021 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
3022 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
3023 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
3024 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
3025 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
3026 ILLEGAL_OPCODE, ILLEGAL_OPCODE, "impdep1", "impdep2"};
3027
3028 /**
3029 * @since 6.0
3030 */
3031 public static final int OPCODE_NAMES_LENGTH = OPCODE_NAMES.length;
3032
3033 /**
3034 * Number of words consumed on operand stack by instructions. Indexed by opcode. CONSUME_STACK[FALOAD] = number of words
3035 * consumed from the stack by a faload instruction.
3036 */
3037 static final int[] CONSUME_STACK = {0/* nop */, 0/* aconst_null */, 0/* iconst_m1 */, 0/* iconst_0 */, 0/* iconst_1 */, 0/* iconst_2 */,
3038 0/* iconst_3 */, 0/* iconst_4 */, 0/* iconst_5 */, 0/* lconst_0 */, 0/* lconst_1 */, 0/* fconst_0 */, 0/* fconst_1 */, 0/* fconst_2 */, 0/* dconst_0 */,
3039 0/* dconst_1 */, 0/* bipush */, 0/* sipush */, 0/* ldc */, 0/* ldc_w */, 0/* ldc2_w */, 0/* iload */, 0/* lload */, 0/* fload */, 0/* dload */,
3040 0/* aload */, 0/* iload_0 */, 0/* iload_1 */, 0/* iload_2 */, 0/* iload_3 */, 0/* lload_0 */, 0/* lload_1 */, 0/* lload_2 */, 0/* lload_3 */,
3041 0/* fload_0 */, 0/* fload_1 */, 0/* fload_2 */, 0/* fload_3 */, 0/* dload_0 */, 0/* dload_1 */, 0/* dload_2 */, 0/* dload_3 */, 0/* aload_0 */,
3042 0/* aload_1 */, 0/* aload_2 */, 0/* aload_3 */, 2/* iaload */, 2/* laload */, 2/* faload */, 2/* daload */, 2/* aaload */, 2/* baload */, 2/* caload */,
3043 2/* saload */, 1/* istore */, 2/* lstore */, 1/* fstore */, 2/* dstore */, 1/* astore */, 1/* istore_0 */, 1/* istore_1 */, 1/* istore_2 */,
3044 1/* istore_3 */, 2/* lstore_0 */, 2/* lstore_1 */, 2/* lstore_2 */, 2/* lstore_3 */, 1/* fstore_0 */, 1/* fstore_1 */, 1/* fstore_2 */, 1/* fstore_3 */,
3045 2/* dstore_0 */, 2/* dstore_1 */, 2/* dstore_2 */, 2/* dstore_3 */, 1/* astore_0 */, 1/* astore_1 */, 1/* astore_2 */, 1/* astore_3 */, 3/* iastore */,
3046 4/* lastore */, 3/* fastore */, 4/* dastore */, 3/* aastore */, 3/* bastore */, 3/* castore */, 3/* sastore */, 1/* pop */, 2/* pop2 */, 1/* dup */,
3047 2/* dup_x1 */, 3/* dup_x2 */, 2/* dup2 */, 3/* dup2_x1 */, 4/* dup2_x2 */, 2/* swap */, 2/* iadd */, 4/* ladd */, 2/* fadd */, 4/* dadd */, 2/* isub */,
3048 4/* lsub */, 2/* fsub */, 4/* dsub */, 2/* imul */, 4/* lmul */, 2/* fmul */, 4/* dmul */, 2/* idiv */, 4/* ldiv */, 2/* fdiv */, 4/* ddiv */,
3049 2/* irem */, 4/* lrem */, 2/* frem */, 4/* drem */, 1/* ineg */, 2/* lneg */, 1/* fneg */, 2/* dneg */, 2/* ishl */, 3/* lshl */, 2/* ishr */,
3050 3/* lshr */, 2/* iushr */, 3/* lushr */, 2/* iand */, 4/* land */, 2/* ior */, 4/* lor */, 2/* ixor */, 4/* lxor */, 0/* iinc */, 1/* i2l */,
3051 1/* i2f */, 1/* i2d */, 2/* l2i */, 2/* l2f */, 2/* l2d */, 1/* f2i */, 1/* f2l */, 1/* f2d */, 2/* d2i */, 2/* d2l */, 2/* d2f */, 1/* i2b */,
3052 1/* i2c */, 1/* i2s */, 4/* lcmp */, 2/* fcmpl */, 2/* fcmpg */, 4/* dcmpl */, 4/* dcmpg */, 1/* ifeq */, 1/* ifne */, 1/* iflt */, 1/* ifge */,
3053 1/* ifgt */, 1/* ifle */, 2/* if_icmpeq */, 2/* if_icmpne */, 2/* if_icmplt */, 2 /* if_icmpge */, 2/* if_icmpgt */, 2/* if_icmple */, 2/* if_acmpeq */,
3054 2/* if_acmpne */, 0/* goto */, 0/* jsr */, 0/* ret */, 1/* tableswitch */, 1/* lookupswitch */, 1/* ireturn */, 2/* lreturn */, 1/* freturn */,
3055 2/* dreturn */, 1/* areturn */, 0/* return */, 0/* getstatic */, UNPREDICTABLE/* putstatic */, 1/* getfield */, UNPREDICTABLE/* putfield */,
3056 UNPREDICTABLE/* invokevirtual */, UNPREDICTABLE/* invokespecial */, UNPREDICTABLE/* invokestatic */, UNPREDICTABLE/* invokeinterface */,
3057 UNPREDICTABLE/* invokedynamic */, 0/* new */, 1/* newarray */, 1/* anewarray */, 1/* arraylength */, 1/* athrow */, 1/* checkcast */, 1/* instanceof */,
3058 1/* monitorenter */, 1/* monitorexit */, 0/* wide */, UNPREDICTABLE/* multianewarray */, 1/* ifnull */, 1/* ifnonnull */, 0/* goto_w */, 0/* jsr_w */,
3059 0/* breakpoint */, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
3060 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
3061 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
3062 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
3063 UNPREDICTABLE/* impdep1 */, UNPREDICTABLE/* impdep2 */
3064 };
3065
3066 /**
3067 * Number of words produced onto operand stack by instructions. Indexed by opcode. CONSUME_STACK[DALOAD] = number of
3068 * words consumed from the stack by a daload instruction.
3069 */
3070 static final int[] PRODUCE_STACK = {0/* nop */, 1/* aconst_null */, 1/* iconst_m1 */, 1/* iconst_0 */, 1/* iconst_1 */, 1/* iconst_2 */,
3071 1/* iconst_3 */, 1/* iconst_4 */, 1/* iconst_5 */, 2/* lconst_0 */, 2/* lconst_1 */, 1/* fconst_0 */, 1/* fconst_1 */, 1/* fconst_2 */, 2/* dconst_0 */,
3072 2/* dconst_1 */, 1/* bipush */, 1/* sipush */, 1/* ldc */, 1/* ldc_w */, 2/* ldc2_w */, 1/* iload */, 2/* lload */, 1/* fload */, 2/* dload */,
3073 1/* aload */, 1/* iload_0 */, 1/* iload_1 */, 1/* iload_2 */, 1/* iload_3 */, 2/* lload_0 */, 2/* lload_1 */, 2/* lload_2 */, 2/* lload_3 */,
3074 1/* fload_0 */, 1/* fload_1 */, 1/* fload_2 */, 1/* fload_3 */, 2/* dload_0 */, 2/* dload_1 */, 2/* dload_2 */, 2/* dload_3 */, 1/* aload_0 */,
3075 1/* aload_1 */, 1/* aload_2 */, 1/* aload_3 */, 1/* iaload */, 2/* laload */, 1/* faload */, 2/* daload */, 1/* aaload */, 1/* baload */, 1/* caload */,
3076 1/* saload */, 0/* istore */, 0/* lstore */, 0/* fstore */, 0/* dstore */, 0/* astore */, 0/* istore_0 */, 0/* istore_1 */, 0/* istore_2 */,
3077 0/* istore_3 */, 0/* lstore_0 */, 0/* lstore_1 */, 0/* lstore_2 */, 0/* lstore_3 */, 0/* fstore_0 */, 0/* fstore_1 */, 0/* fstore_2 */, 0/* fstore_3 */,
3078 0/* dstore_0 */, 0/* dstore_1 */, 0/* dstore_2 */, 0/* dstore_3 */, 0/* astore_0 */, 0/* astore_1 */, 0/* astore_2 */, 0/* astore_3 */, 0/* iastore */,
3079 0/* lastore */, 0/* fastore */, 0/* dastore */, 0/* aastore */, 0/* bastore */, 0/* castore */, 0/* sastore */, 0/* pop */, 0/* pop2 */, 2/* dup */,
3080 3/* dup_x1 */, 4/* dup_x2 */, 4/* dup2 */, 5/* dup2_x1 */, 6/* dup2_x2 */, 2/* swap */, 1/* iadd */, 2/* ladd */, 1/* fadd */, 2/* dadd */, 1/* isub */,
3081 2/* lsub */, 1/* fsub */, 2/* dsub */, 1/* imul */, 2/* lmul */, 1/* fmul */, 2/* dmul */, 1/* idiv */, 2/* ldiv */, 1/* fdiv */, 2/* ddiv */,
3082 1/* irem */, 2/* lrem */, 1/* frem */, 2/* drem */, 1/* ineg */, 2/* lneg */, 1/* fneg */, 2/* dneg */, 1/* ishl */, 2/* lshl */, 1/* ishr */,
3083 2/* lshr */, 1/* iushr */, 2/* lushr */, 1/* iand */, 2/* land */, 1/* ior */, 2/* lor */, 1/* ixor */, 2/* lxor */, 0/* iinc */, 2/* i2l */,
3084 1/* i2f */, 2/* i2d */, 1/* l2i */, 1/* l2f */, 2/* l2d */, 1/* f2i */, 2/* f2l */, 2/* f2d */, 1/* d2i */, 2/* d2l */, 1/* d2f */, 1/* i2b */,
3085 1/* i2c */, 1/* i2s */, 1/* lcmp */, 1/* fcmpl */, 1/* fcmpg */, 1/* dcmpl */, 1/* dcmpg */, 0/* ifeq */, 0/* ifne */, 0/* iflt */, 0/* ifge */,
3086 0/* ifgt */, 0/* ifle */, 0/* if_icmpeq */, 0/* if_icmpne */, 0/* if_icmplt */, 0/* if_icmpge */, 0/* if_icmpgt */, 0/* if_icmple */, 0/* if_acmpeq */,
3087 0/* if_acmpne */, 0/* goto */, 1/* jsr */, 0/* ret */, 0/* tableswitch */, 0/* lookupswitch */, 0/* ireturn */, 0/* lreturn */, 0/* freturn */,
3088 0/* dreturn */, 0/* areturn */, 0/* return */, UNPREDICTABLE/* getstatic */, 0/* putstatic */, UNPREDICTABLE/* getfield */, 0/* putfield */,
3089 UNPREDICTABLE/* invokevirtual */, UNPREDICTABLE/* invokespecial */, UNPREDICTABLE/* invokestatic */, UNPREDICTABLE/* invokeinterface */,
3090 UNPREDICTABLE/* invokedynamic */, 1/* new */, 1/* newarray */, 1/* anewarray */, 1/* arraylength */, 1/* athrow */, 1/* checkcast */, 1/* instanceof */,
3091 0/* monitorenter */, 0/* monitorexit */, 0/* wide */, 1/* multianewarray */, 0/* ifnull */, 0/* ifnonnull */, 0/* goto_w */, 1/* jsr_w */,
3092 0/* breakpoint */, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
3093 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
3094 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
3095 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
3096 UNPREDICTABLE/* impdep1 */, UNPREDICTABLE/* impdep2 */
3097 };
3098
3099 /**
3100 * Attributes and their corresponding names.
3101 */
3102 public static final byte ATTR_UNKNOWN = -1;
3103
3104 public static final byte ATTR_SOURCE_FILE = 0;
3105
3106 public static final byte ATTR_CONSTANT_VALUE = 1;
3107
3108 public static final byte ATTR_CODE = 2;
3109
3110 public static final byte ATTR_EXCEPTIONS = 3;
3111
3112 public static final byte ATTR_LINE_NUMBER_TABLE = 4;
3113
3114 public static final byte ATTR_LOCAL_VARIABLE_TABLE = 5;
3115
3116 public static final byte ATTR_INNER_CLASSES = 6;
3117
3118 public static final byte ATTR_SYNTHETIC = 7;
3119
3120 public static final byte ATTR_DEPRECATED = 8;
3121
3122 public static final byte ATTR_PMG = 9;
3123
3124 public static final byte ATTR_SIGNATURE = 10;
3125
3126 public static final byte ATTR_STACK_MAP = 11;
3127 public static final byte ATTR_RUNTIME_VISIBLE_ANNOTATIONS = 12;
3128 public static final byte ATTR_RUNTIME_INVISIBLE_ANNOTATIONS = 13;
3129 public static final byte ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS = 14;
3130 public static final byte ATTR_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS = 15;
3131 public static final byte ATTR_ANNOTATION_DEFAULT = 16;
3132 public static final byte ATTR_LOCAL_VARIABLE_TYPE_TABLE = 17;
3133 public static final byte ATTR_ENCLOSING_METHOD = 18;
3134 public static final byte ATTR_STACK_MAP_TABLE = 19;
3135 public static final byte ATTR_BOOTSTRAP_METHODS = 20;
3136 public static final byte ATTR_METHOD_PARAMETERS = 21;
3137 public static final byte ATTR_MODULE = 22;
3138 public static final byte ATTR_MODULE_PACKAGES = 23;
3139 public static final byte ATTR_MODULE_MAIN_CLASS = 24;
3140 public static final byte ATTR_NEST_HOST = 25;
3141 public static final byte ATTR_NEST_MEMBERS = 26;
3142 public static final byte ATTR_RECORD = 27;
3143
3144 public static final short KNOWN_ATTRIBUTES = 28; // count of attributes
3145 private static final String[] ATTRIBUTE_NAMES = {"SourceFile", "ConstantValue", "Code", "Exceptions", "LineNumberTable", "LocalVariableTable",
3146 "InnerClasses", "Synthetic", "Deprecated", "PMGClass", "Signature", "StackMap", "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
3147 "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations", "AnnotationDefault", "LocalVariableTypeTable", "EnclosingMethod",
3148 "StackMapTable", "BootstrapMethods", "MethodParameters", "Module", "ModulePackages", "ModuleMainClass", "NestHost", "NestMembers", "Record"};
3149 /**
3150 * Constants used in the StackMap attribute.
3151 */
3152 public static final byte ITEM_Bogus = 0;
3153 public static final byte ITEM_Integer = 1;
3154 public static final byte ITEM_Float = 2;
3155 public static final byte ITEM_Double = 3;
3156 public static final byte ITEM_Long = 4;
3157 public static final byte ITEM_Null = 5;
3158 public static final byte ITEM_InitObject = 6;
3159 public static final byte ITEM_Object = 7;
3160 public static final byte ITEM_NewObject = 8;
3161 private static final String[] ITEM_NAMES = {"Bogus", "Integer", "Float", "Double", "Long", "Null", "InitObject", "Object", "NewObject"};
3162
3163 /**
3164 * Constants used to identify StackMapEntry types.
3165 *
3166 * For those types which can specify a range, the constant names the lowest value.
3167 */
3168 public static final int SAME_FRAME = 0;
3169
3170 public static final int SAME_LOCALS_1_STACK_ITEM_FRAME = 64;
3171
3172 public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED = 247;
3173
3174 public static final int CHOP_FRAME = 248;
3175 public static final int SAME_FRAME_EXTENDED = 251;
3176 public static final int APPEND_FRAME = 252;
3177 public static final int FULL_FRAME = 255;
3178
3179 /**
3180 * Constants that define the maximum value of those constants which store ranges.
3181 */
3182
3183 public static final int SAME_FRAME_MAX = 63;
3184 public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_MAX = 127;
3185 public static final int CHOP_FRAME_MAX = 250;
3186 public static final int APPEND_FRAME_MAX = 254;
3187 public static final byte REF_getField = 1;
3188
3189 public static final byte REF_getStatic = 2;
3190
3191 public static final byte REF_putField = 3;
3192
3193 public static final byte REF_putStatic = 4;
3194 public static final byte REF_invokeVirtual = 5;
3195 public static final byte REF_invokeStatic = 6;
3196 public static final byte REF_invokeSpecial = 7;
3197 public static final byte REF_newInvokeSpecial = 8;
3198 public static final byte REF_invokeInterface = 9;
3199
3200 /**
3201 * The names of the reference_kinds of a CONSTANT_MethodHandle_info.
3202 */
3203 private static final String[] METHODHANDLE_NAMES = {"", "getField", "getStatic", "putField", "putStatic", "invokeVirtual", "invokeStatic", "invokeSpecial",
3204 "newInvokeSpecial", "invokeInterface"};
3205
3206 /**
3207 * @param index index into {@code ACCESS_NAMES}.
3208 * @return the ACCESS_NAMES entry at the given index
3209 * @since 6.0
3210 */
3211 public static String getAccessName(final int index) {
3212 return ACCESS_NAMES[index];
3213 }
3214
3215 /**
3216 *
3217 * @param index index into {@code ACCESS_NAMES}.
3218 * @return the attribute name
3219 * @since 6.0
3220 */
3221 public static String getAttributeName(final int index) {
3222 return ATTRIBUTE_NAMES[index];
3223 }
3224
3225 /**
3226 * The primitive class names corresponding to the T_XX constants, for example, CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
3227 *
3228 * @param index index into {@code CLASS_TYPE_NAMES}.
3229 * @return the class name
3230 * @since 6.0
3231 */
3232 public static String getClassTypeName(final int index) {
3233 return CLASS_TYPE_NAMES[index];
3234 }
3235
3236 /**
3237 *
3238 * @param index index into {@code CONSTANT_NAMES}.
3239 * @return the CONSTANT_NAMES entry at the given index
3240 * @since 6.0
3241 */
3242 public static String getConstantName(final int index) {
3243 return CONSTANT_NAMES[index];
3244 }
3245
3246 // Constants defining the behavior of the Method Handles (JVMS �5.4.3.5)
3247
3248 /**
3249 *
3250 * @param index index into {@code CONSUME_STACK}.
3251 * @return Number of words consumed on operand stack
3252 * @since 6.0
3253 */
3254 public static int getConsumeStack(final int index) {
3255 return CONSUME_STACK[index];
3256 }
3257
3258 /**
3259 * @since 6.0
3260 */
3261 public static Iterable<String> getInterfacesImplementedByArrays() {
3262 return Collections.unmodifiableList(Arrays.asList(INTERFACES_IMPLEMENTED_BY_ARRAYS));
3263 }
3264
3265 /**
3266 *
3267 * @param index index into {@code ITEM_NAMES}.
3268 * @return the item name
3269 * @since 6.0
3270 */
3271 public static String getItemName(final int index) {
3272 return ITEM_NAMES[index];
3273 }
3274
3275 /**
3276 *
3277 * @param index index into {@code METHODHANDLE_NAMES}.
3278 * @return the method handle name
3279 * @since 6.0
3280 */
3281 public static String getMethodHandleName(final int index) {
3282 return METHODHANDLE_NAMES[index];
3283 }
3284
3285 /**
3286 *
3287 * @param index index into {@code NO_OF_OPERANDS}.
3288 * @return Number of byte code operands
3289 * @since 6.0
3290 */
3291 public static short getNoOfOperands(final int index) {
3292 return NO_OF_OPERANDS[index];
3293 }
3294
3295 /**
3296 * @since 6.0
3297 */
3298 public static String getOpcodeName(final int index) {
3299 return OPCODE_NAMES[index];
3300 }
3301
3302 /**
3303 * @since 6.0
3304 */
3305 public static short getOperandType(final int opcode, final int index) {
3306 return TYPE_OF_OPERANDS[opcode][index];
3307 }
3308
3309 /**
3310 * @since 6.0
3311 */
3312 public static long getOperandTypeCount(final int opcode) {
3313 return TYPE_OF_OPERANDS[opcode].length;
3314 }
3315
3316 /**
3317 *
3318 * @param index
3319 * @return Number of words produced onto operand stack
3320 * @since 6.0
3321 */
3322 public static int getProduceStack(final int index) {
3323 return PRODUCE_STACK[index];
3324 }
3325
3326 /**
3327 *
3328 * @param index
3329 * @return the short type name
3330 * @since 6.0
3331 */
3332 public static String getShortTypeName(final int index) {
3333 return SHORT_TYPE_NAMES[index];
3334 }
3335
3336 /**
3337 * The primitive type names corresponding to the T_XX constants, for example, TYPE_NAMES[T_INT] = "int"
3338 *
3339 * @param index
3340 * @return the type name
3341 * @since 6.0
3342 */
3343 public static String getTypeName(final int index) {
3344 return TYPE_NAMES[index];
3345 }
3346
3347 private Const() {
3348 } // not instantiable
3349
3350 }