| CLConstants.java |
1 // Copyright 2012- Bill Campbell, Swami Iyer and Bahar Akbal-Delibas
2
3 package jminusminus;
4
5 /**
6 * This class defines constants related to the JVM bytecode.
7 */
8 public class CLConstants {
9 /**
10 * Magic number (0xCAFEBABE) identifying the class file format.
11 */
12 public static final long MAGIC = 3405691582L;
13
14 /**
15 * Major version for the class files that j-- compiles.
16 */
17 public static final int MAJOR_VERSION = 49;
18
19 /**
20 * Minor version for the class files that j-- compiles.
21 */
22 public static final int MINOR_VERSION = 0;
23
24 /**
25 * public access flag.
26 */
27 public static final int ACC_PUBLIC = 0x0001;
28
29 /**
30 * private access flag.
31 */
32 public static final int ACC_PRIVATE = 0x0002;
33
34 /**
35 * protected access flag.
36 */
37 public static final int ACC_PROTECTED = 0x0004;
38
39 /**
40 * static access flag.
41 */
42 public static final int ACC_STATIC = 0x0008;
43
44 /**
45 * final access flag.
46 */
47 public static final int ACC_FINAL = 0x0010;
48
49 /**
50 * super access flag.
51 */
52 public static final int ACC_SUPER = 0x0020;
53
54 /**
55 * synchronized access flag.
56 */
57 public static final int ACC_SYNCHRONIZED = 0x0020;
58
59 /**
60 * volatile access flag.
61 */
62 public static final int ACC_VOLATILE = 0x0040;
63
64 /**
65 * bridge access flag.
66 */
67 public static final int ACC_BRIDGE = 0x0040;
68
69 /**
70 * transient access flag.
71 */
72 public static final int ACC_TRANSIENT = 0x0080;
73
74 /**
75 * varargs access flag.
76 */
77 public static final int ACC_VARARGS = 0x0080;
78
79 /**
80 * native access flag.
81 */
82 public static final int ACC_NATIVE = 0x0100;
83
84 /**
85 * interface access flag.
86 */
87 public static final int ACC_INTERFACE = 0x0200;
88
89 /**
90 * abstract access flag.
91 */
92 public static final int ACC_ABSTRACT = 0x0400;
93
94 /**
95 * strict access flag.
96 */
97 public static final int ACC_STRICT = 0x0800;
98
99 /**
100 * synthetic access flag.
101 */
102 public static final int ACC_SYNTHETIC = 0x1000;
103
104 /**
105 * annotation access flag.
106 */
107 public static final int ACC_ANNOTATION = 0x2000;
108
109 /**
110 * enum access flag.
111 */
112 public static final int ACC_ENUM = 0x4000;
113
114 /**
115 * Identifies CONSTANT_Utf8_info constant pool structure.
116 */
117 public static final short CONSTANT_Utf8 = 1;
118
119 /**
120 * Identifies CONSTANT_Integer_info constant pool structure.
121 */
122 public static final short CONSTANT_Integer = 3;
123
124 /**
125 * Identifies CONSTANT_Float_info constant pool structure.
126 */
127 public static final short CONSTANT_Float = 4;
128
129 /**
130 * Identifies CONSTANT_Long_info constant pool structure.
131 */
132 public static final short CONSTANT_Long = 5;
133
134 /**
135 * Identifies CONSTANT_Double_info constant pool structure.
136 */
137 public static final short CONSTANT_Double = 6;
138
139 /**
140 * Identifies CONSTANT_Class_info constant pool structure.
141 */
142 public static final short CONSTANT_Class = 7;
143
144 /**
145 * Identifies CONSTANT_String_info constant pool structure.
146 */
147 public static final short CONSTANT_String = 8;
148
149 /**
150 * Identifies CONSTANT_Fieldref_info constant pool structure.
151 */
152 public static final short CONSTANT_Fieldref = 9;
153
154 /**
155 * Identifies CONSTANT_Methodref_info constant pool structure.
156 */
157 public static final short CONSTANT_Methodref = 10;
158
159 /**
160 * Identifies CONSTANT_InterfaceMethodref_info constant pool structure.
161 */
162 public static final short CONSTANT_InterfaceMethodref = 11;
163
164 /**
165 * Identifies CONSTANT_NameAndType_info constant pool structure.
166 */
167 public static final short CONSTANT_NameAndType = 12;
168
169 /**
170 * Identifies ConstantValue attribute.
171 */
172 public static final String ATT_CONSTANT_VALUE = "ConstantValue";
173
174 /**
175 * Identifies Code attribute.
176 */
177 public static final String ATT_CODE = "Code";
178
179 /**
180 * Identifies Exceptions attribute.
181 */
182 public static final String ATT_EXCEPTIONS = "Exceptions";
183
184 /**
185 * Identifies InnerClasses attribute.
186 */
187 public static final String ATT_INNER_CLASSES = "InnerClasses";
188
189 /**
190 * Identifies EnclosingMethod attribute.
191 */
192 public static final String ATT_ENCLOSING_METHOD = "EnclosingMethod";
193
194 /**
195 * Identifies Synthetic attribute.
196 */
197 public static final String ATT_SYNTHETIC = "Synthetic";
198
199 /**
200 * Identifies Signature attribute.
201 */
202 public static final String ATT_SIGNATURE = "Signature";
203
204 /**
205 * Identifies SourceFile attribute.
206 */
207 public static final String ATT_SOURCE_FILE = "SourceFile";
208
209 /**
210 * Identifies SourceDebugExtension attribute.
211 */
212 public static final String ATT_SOURCE_DEBUG_EXTENSION = "SourceDebugExtension";
213
214 /**
215 * Identifies LineNumberTable attribute.
216 */
217 public static final String ATT_LINE_NUMBER_TABLE = "LineNumberTable";
218
219 /**
220 * Identifies LocalVariableTable attribute.
221 */
222 public static final String ATT_LOCAL_VARIABLE_TABLE = "LocalVariableTable";
223
224 /**
225 * Identifies LocalVariableTypeTable attribute.
226 */
227 public static final String ATT_LOCAL_VARIABLE_TYPE_TABLE = "LocalVariableTypeTable";
228
229 /**
230 * Identifies Deprecated attribute.
231 */
232 public static final String ATT_DEPRECATED = "Deprecated";
233
234 /**
235 * Identifies RuntimeVisibleAnnotations attribute.
236 */
237 public static final String ATT_RUNTIME_VISIBLE_ANNOTATIONS = "RuntimeVisibleAnnotations";
238
239 /**
240 * Identifies RuntimeInvisibleAnnotations attribute.
241 */
242 public static final String ATT_RUNTIME_INVISIBLE_ANNOTATIONS = "RuntimeInvisibleAnnotations";
243
244 /**
245 * Identifies RuntimeVisibleParameterAnnotations attribute.
246 */
247 public static final String ATT_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS =
248 "RuntimeVisibleParameterAnnotations";
249
250 /**
251 * Identifies RuntimeInvisibleParameterAnnotations attribute.
252 */
253 public static final String ATT_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS =
254 "RuntimeInvisibleParameterAnnotations";
255
256 /**
257 * Identifies AnnotationDefault attribute.
258 */
259 public static final String ATT_ANNOTATION_DEFAULT = "AnnotationDefault";
260
261 /**
262 * Identifies boolean type of annotation element value.
263 */
264 public static final short ELT_B = 'B';
265
266 /**
267 * Identifies char type of annotation element value.
268 */
269 public static final short ELT_C = 'C';
270
271 /**
272 * Identifies double type of annotation element value.
273 */
274 public static final short ELT_D = 'D';
275
276 /**
277 * Identifies float type of annotation element value.
278 */
279 public static final short ELT_F = 'F';
280
281 /**
282 * Identifies int type of annotation element value.
283 */
284 public static final short ELT_I = 'I';
285
286 /**
287 * Identifies long type of annotation element value.
288 */
289 public static final short ELT_J = 'J';
290
291 /**
292 * Identifies short type of annotation element value.
293 */
294 public static final short ELT_S = 'S';
295
296 /**
297 * Identifies boolean type of annotation element value.
298 */
299 public static final short ELT_Z = 'Z';
300
301 /**
302 * Identifies String type of annotation element value.
303 */
304 public static final short ELT_s = 's';
305
306 /**
307 * Identifies class type of annotation element value.
308 */
309 public static final short ELT_c = 'c';
310
311 /**
312 * Identifies annotation type of annotation element value.
313 */
314 public static final short ELT_ANNOTATION = '@';
315
316 /**
317 * Identifies array type of annotation element value.
318 */
319 public static final short ELT_ARRAY = '[';
320
321 /**
322 * Identifies enum type of annotation element value.
323 */
324 public static final short ELT_e = 'e';
325
326 // JVM instructions begin here
327
328 /**
329 * NOP instruction.
330 */
331 public static final int NOP = 0;
332
333 /**
334 * ACONST_NULL instruction.
335 */
336 public static final int ACONST_NULL = 1;
337
338 /**
339 * ICONST_M1 instruction.
340 */
341 public static final int ICONST_M1 = 2;
342
343 /**
344 * ICONST_0 instruction.
345 */
346 public static final int ICONST_0 = 3;
347
348 /**
349 * ICONST_1 instruction.
350 */
351 public static final int ICONST_1 = 4;
352
353 /**
354 * ICONST_2 instruction.
355 */
356 public static final int ICONST_2 = 5;
357
358 /**
359 * ICONST_3 instruction.
360 */
361 public static final int ICONST_3 = 6;
362
363 /**
364 * ICONST_4 instruction.
365 */
366 public static final int ICONST_4 = 7;
367
368 /**
369 * ICONST_5 instruction.
370 */
371 public static final int ICONST_5 = 8;
372
373 /**
374 * LCONST_0 instruction.
375 */
376 public static final int LCONST_0 = 9;
377
378 /**
379 * LCONST_1 instruction.
380 */
381 public static final int LCONST_1 = 10;
382
383 /**
384 * FCONST_0 instruction.
385 */
386 public static final int FCONST_0 = 11;
387
388 /**
389 * FCONST_1 instruction.
390 */
391 public static final int FCONST_1 = 12;
392
393 /**
394 * FCONST_2 instruction.
395 */
396 public static final int FCONST_2 = 13;
397
398 /**
399 * DCONST_0 instruction.
400 */
401 public static final int DCONST_0 = 14;
402
403 /**
404 * DCONST_1 instruction.
405 */
406 public static final int DCONST_1 = 15;
407
408 /**
409 * BIPUSH instruction.
410 */
411 public static final int BIPUSH = 16;
412
413 /**
414 * SIPUSH instruction.
415 */
416 public static final int SIPUSH = 17;
417
418 /**
419 * LDC instruction.
420 */
421 public static final int LDC = 18;
422
423 /**
424 * LDC_W instruction.
425 */
426 public static final int LDC_W = 19;
427
428 /**
429 * LDC2_W instruction.
430 */
431 public static final int LDC2_W = 20;
432
433 /**
434 * ILOAD instruction.
435 */
436 public static final int ILOAD = 21;
437
438 /**
439 * LLOAD instruction.
440 */
441 public static final int LLOAD = 22;
442
443 /**
444 * FLOAD instruction.
445 */
446 public static final int FLOAD = 23;
447
448 /**
449 * DLOAD instruction.
450 */
451 public static final int DLOAD = 24;
452
453 /**
454 * ALOAD instruction.
455 */
456 public static final int ALOAD = 25;
457
458 /**
459 * ILOAD_0 instruction.
460 */
461 public static final int ILOAD_0 = 26;
462
463 /**
464 * ILOAD_1 instruction.
465 */
466 public static final int ILOAD_1 = 27;
467
468 /**
469 * ILOAD_2 instruction.
470 */
471 public static final int ILOAD_2 = 28;
472
473 /**
474 * ILOAD_3 instruction.
475 */
476 public static final int ILOAD_3 = 29;
477
478 /**
479 * LLOAD_0 instruction.
480 */
481 public static final int LLOAD_0 = 30;
482
483 /**
484 * LLOAD_1 instruction.
485 */
486 public static final int LLOAD_1 = 31;
487
488 /**
489 * LLOAD_2 instruction.
490 */
491 public static final int LLOAD_2 = 32;
492
493 /**
494 * LLOAD_3 instruction.
495 */
496 public static final int LLOAD_3 = 33;
497
498 /**
499 * FLOAD_0 instruction.
500 */
501 public static final int FLOAD_0 = 34;
502
503 /**
504 * FLOAD_1 instruction.
505 */
506 public static final int FLOAD_1 = 35;
507
508 /**
509 * FLOAD_2 instruction.
510 */
511 public static final int FLOAD_2 = 36;
512
513 /**
514 * FLOAD_3 instruction.
515 */
516 public static final int FLOAD_3 = 37;
517
518 /**
519 * DLOAD_0 instruction.
520 */
521 public static final int DLOAD_0 = 38;
522
523 /**
524 * DLOAD_1 instruction.
525 */
526 public static final int DLOAD_1 = 39;
527
528 /**
529 * DLOAD_2 instruction.
530 */
531 public static final int DLOAD_2 = 40;
532
533 /**
534 * DLOAD_3 instruction.
535 */
536 public static final int DLOAD_3 = 41;
537
538 /**
539 * ALOAD_0 instruction.
540 */
541 public static final int ALOAD_0 = 42;
542
543 /**
544 * ALOAD_1 instruction.
545 */
546 public static final int ALOAD_1 = 43;
547
548 /**
549 * ALOAD_2 instruction.
550 */
551 public static final int ALOAD_2 = 44;
552
553 /**
554 * ALOAD_3 instruction.
555 */
556 public static final int ALOAD_3 = 45;
557
558 /**
559 * IALOAD instruction.
560 */
561 public static final int IALOAD = 46;
562
563 /**
564 * LALOAD instruction.
565 */
566 public static final int LALOAD = 47;
567
568 /**
569 * FALOAD instruction.
570 */
571 public static final int FALOAD = 48;
572
573 /**
574 * DALOAD instruction.
575 */
576 public static final int DALOAD = 49;
577
578 /**
579 * AALOAD instruction.
580 */
581 public static final int AALOAD = 50;
582
583 /**
584 * BALOAD instruction.
585 */
586 public static final int BALOAD = 51;
587
588 /**
589 * CALOAD instruction.
590 */
591 public static final int CALOAD = 52;
592
593 /**
594 * SALOAD instruction.
595 */
596 public static final int SALOAD = 53;
597
598 /**
599 * ISTORE instruction.
600 */
601 public static final int ISTORE = 54;
602
603 /**
604 * LSTORE instruction.
605 */
606 public static final int LSTORE = 55;
607
608 /**
609 * FSTORE instruction.
610 */
611 public static final int FSTORE = 56;
612
613 /**
614 * DSTORE instruction.
615 */
616 public static final int DSTORE = 57;
617
618 /**
619 * ASTORE instruction.
620 */
621 public static final int ASTORE = 58;
622
623 /**
624 * ISTORE_0 instruction.
625 */
626 public static final int ISTORE_0 = 59;
627
628 /**
629 * ISTORE_1 instruction.
630 */
631 public static final int ISTORE_1 = 60;
632
633 /**
634 * ISTORE_2 instruction.
635 */
636 public static final int ISTORE_2 = 61;
637
638 /**
639 * ISTORE_3 instruction.
640 */
641 public static final int ISTORE_3 = 62;
642
643 /**
644 * LSTORE_0 instruction.
645 */
646 public static final int LSTORE_0 = 63;
647
648 /**
649 * LSTORE_1 instruction.
650 */
651 public static final int LSTORE_1 = 64;
652
653 /**
654 * LSTORE_2 instruction.
655 */
656 public static final int LSTORE_2 = 65;
657
658 /**
659 * LSTORE_3 instruction.
660 */
661 public static final int LSTORE_3 = 66;
662
663 /**
664 * FSTORE_0 instruction.
665 */
666 public static final int FSTORE_0 = 67;
667
668 /**
669 * FSTORE_1 instruction.
670 */
671 public static final int FSTORE_1 = 68;
672
673 /**
674 * FSTORE_2 instruction.
675 */
676 public static final int FSTORE_2 = 69;
677
678 /**
679 * FSTORE_3 instruction.
680 */
681 public static final int FSTORE_3 = 70;
682
683 /**
684 * DSTORE_0 instruction.
685 */
686 public static final int DSTORE_0 = 71;
687
688 /**
689 * DSTORE_1 instruction.
690 */
691 public static final int DSTORE_1 = 72;
692
693 /**
694 * DSTORE_2 instruction.
695 */
696 public static final int DSTORE_2 = 73;
697
698 /**
699 * DSTORE_3 instruction.
700 */
701 public static final int DSTORE_3 = 74;
702
703 /**
704 * ASTORE_0 instruction.
705 */
706 public static final int ASTORE_0 = 75;
707
708 /**
709 * ASTORE_1 instruction.
710 */
711 public static final int ASTORE_1 = 76;
712
713 /**
714 * ASTORE_2 instruction.
715 */
716 public static final int ASTORE_2 = 77;
717
718 /**
719 * ASTORE_3 instruction.
720 */
721 public static final int ASTORE_3 = 78;
722
723 /**
724 * IASTORE instruction.
725 */
726 public static final int IASTORE = 79;
727
728 /**
729 * LASTORE instruction.
730 */
731 public static final int LASTORE = 80;
732
733 /**
734 * FASTORE instruction.
735 */
736 public static final int FASTORE = 81;
737
738 /**
739 * DASTORE instruction.
740 */
741 public static final int DASTORE = 82;
742
743 /**
744 * AASTORE instruction.
745 */
746 public static final int AASTORE = 83;
747
748 /**
749 * BASTORE instruction.
750 */
751 public static final int BASTORE = 84;
752
753 /**
754 * CASTORE instruction.
755 */
756 public static final int CASTORE = 85;
757
758 /**
759 * SASTORE instruction.
760 */
761 public static final int SASTORE = 86;
762
763 /**
764 * POP instruction.
765 */
766 public static final int POP = 87;
767
768 /**
769 * POP2 instruction.
770 */
771 public static final int POP2 = 88;
772
773 /**
774 * DUP instruction.
775 */
776 public static final int DUP = 89;
777
778 /**
779 * DUP_X1 instruction.
780 */
781 public static final int DUP_X1 = 90;
782
783 /**
784 * DUP_X2 instruction.
785 */
786 public static final int DUP_X2 = 91;
787
788 /**
789 * DUP2 instruction.
790 */
791 public static final int DUP2 = 92;
792
793 /**
794 * DUP2_X1 instruction.
795 */
796 public static final int DUP2_X1 = 93;
797
798 /**
799 * DUP2_X2 instruction.
800 */
801 public static final int DUP2_X2 = 94;
802
803 /**
804 * SWAP instruction.
805 */
806 public static final int SWAP = 95;
807
808 /**
809 * IADD instruction.
810 */
811 public static final int IADD = 96;
812
813 /**
814 * LADD instruction.
815 */
816 public static final int LADD = 97;
817
818 /**
819 * FADD instruction.
820 */
821 public static final int FADD = 98;
822
823 /**
824 * DADD instruction.
825 */
826 public static final int DADD = 99;
827
828 /**
829 * ISUB instruction.
830 */
831 public static final int ISUB = 100;
832
833 /**
834 * LSUB instruction.
835 */
836 public static final int LSUB = 101;
837
838 /**
839 * FSUB instruction.
840 */
841 public static final int FSUB = 102;
842
843 /**
844 * DSUB instruction.
845 */
846 public static final int DSUB = 103;
847
848 /**
849 * IMUL instruction.
850 */
851 public static final int IMUL = 104;
852
853 /**
854 * LMUL instruction.
855 */
856 public static final int LMUL = 105;
857
858 /**
859 * FMUL instruction.
860 */
861 public static final int FMUL = 106;
862
863 /**
864 * DMUL instruction.
865 */
866 public static final int DMUL = 107;
867
868 /**
869 * IDIV instruction.
870 */
871 public static final int IDIV = 108;
872
873 /**
874 * LDIV instruction.
875 */
876 public static final int LDIV = 109;
877
878 /**
879 * FDIV instruction.
880 */
881 public static final int FDIV = 110;
882
883 /**
884 * DDIV instruction.
885 */
886 public static final int DDIV = 111;
887
888 /**
889 * IREM instruction.
890 */
891 public static final int IREM = 112;
892
893 /**
894 * LREM instruction.
895 */
896 public static final int LREM = 113;
897
898 /**
899 * FREM instruction.
900 */
901 public static final int FREM = 114;
902
903 /**
904 * DREM instruction.
905 */
906 public static final int DREM = 115;
907
908 /**
909 * INEG instruction.
910 */
911 public static final int INEG = 116;
912
913 /**
914 * LNEG instruction.
915 */
916 public static final int LNEG = 117;
917
918 /**
919 * FNEG instruction.
920 */
921 public static final int FNEG = 118;
922
923 /**
924 * DNEG instruction.
925 */
926 public static final int DNEG = 119;
927
928 /**
929 * ISHL instruction.
930 */
931 public static final int ISHL = 120;
932
933 /**
934 * LSHL instruction.
935 */
936 public static final int LSHL = 121;
937
938 /**
939 * ISHR instruction.
940 */
941 public static final int ISHR = 122;
942
943 /**
944 * LSHR instruction.
945 */
946 public static final int LSHR = 123;
947
948 /**
949 * IUSHR instruction.
950 */
951 public static final int IUSHR = 124;
952
953 /**
954 * LUSHR instruction.
955 */
956 public static final int LUSHR = 125;
957
958 /**
959 * IAND instruction.
960 */
961 public static final int IAND = 126;
962
963 /**
964 * LAND instruction.
965 */
966 public static final int LAND = 127;
967
968 /**
969 * IOR instruction.
970 */
971 public static final int IOR = 128;
972
973 /**
974 * LOR instruction.
975 */
976 public static final int LOR = 129;
977
978 /**
979 * IXOR instruction.
980 */
981 public static final int IXOR = 130;
982
983 /**
984 * LXOR instruction.
985 */
986 public static final int LXOR = 131;
987
988 /**
989 * IINC instruction.
990 */
991 public static final int IINC = 132;
992
993 /**
994 * I2L instruction.
995 */
996 public static final int I2L = 133;
997
998 /**
999 * I2F instruction.
1000 */
1001 public static final int I2F = 134;
1002
1003 /**
1004 * I2D instruction.
1005 */
1006 public static final int I2D = 135;
1007
1008 /**
1009 * L2I instruction.
1010 */
1011 public static final int L2I = 136;
1012
1013 /**
1014 * L2F instruction.
1015 */
1016 public static final int L2F = 137;
1017
1018 /**
1019 * L2D instruction.
1020 */
1021 public static final int L2D = 138;
1022
1023 /**
1024 * F2I instruction.
1025 */
1026 public static final int F2I = 139;
1027
1028 /**
1029 * F2L instruction.
1030 */
1031 public static final int F2L = 140;
1032
1033 /**
1034 * F2D instruction.
1035 */
1036 public static final int F2D = 141;
1037
1038 /**
1039 * D2I instruction.
1040 */
1041 public static final int D2I = 142;
1042
1043 /**
1044 * D2L instruction.
1045 */
1046 public static final int D2L = 143;
1047
1048 /**
1049 * D2F instruction.
1050 */
1051 public static final int D2F = 144;
1052
1053 /**
1054 * I2B instruction.
1055 */
1056 public static final int I2B = 145;
1057
1058 /**
1059 * I2C instruction.
1060 */
1061 public static final int I2C = 146;
1062
1063 /**
1064 * I2S instruction.
1065 */
1066 public static final int I2S = 147;
1067
1068 /**
1069 * LCMP instruction.
1070 */
1071 public static final int LCMP = 148;
1072
1073 /**
1074 * FCMPL instruction.
1075 */
1076 public static final int FCMPL = 149;
1077
1078 /**
1079 * FCMPG instruction.
1080 */
1081 public static final int FCMPG = 150;
1082
1083 /**
1084 * DCMPL instruction.
1085 */
1086 public static final int DCMPL = 151;
1087
1088 /**
1089 * DCMPG instruction.
1090 */
1091 public static final int DCMPG = 152;
1092
1093 /**
1094 * IFEQ instruction.
1095 */
1096 public static final int IFEQ = 153;
1097
1098 /**
1099 * IFNE instruction.
1100 */
1101 public static final int IFNE = 154;
1102
1103 /**
1104 * IFLT instruction.
1105 */
1106 public static final int IFLT = 155;
1107
1108 /**
1109 * IFGE instruction.
1110 */
1111 public static final int IFGE = 156;
1112
1113 /**
1114 * IFGT instruction.
1115 */
1116 public static final int IFGT = 157;
1117
1118 /**
1119 * IFLE instruction.
1120 */
1121 public static final int IFLE = 158;
1122
1123 /**
1124 * IF_ICMPEQ instruction.
1125 */
1126 public static final int IF_ICMPEQ = 159;
1127
1128 /**
1129 * IF_ICMPNE instruction.
1130 */
1131 public static final int IF_ICMPNE = 160;
1132
1133 /**
1134 * IF_ICMPLT instruction.
1135 */
1136 public static final int IF_ICMPLT = 161;
1137
1138 /**
1139 * IF_ICMPGE instruction.
1140 */
1141 public static final int IF_ICMPGE = 162;
1142
1143 /**
1144 * IF_ICMPGT instruction.
1145 */
1146 public static final int IF_ICMPGT = 163;
1147
1148 /**
1149 * IF_ICMPLE instruction.
1150 */
1151 public static final int IF_ICMPLE = 164;
1152
1153 /**
1154 * IF_ACMPEQ instruction.
1155 */
1156 public static final int IF_ACMPEQ = 165;
1157
1158 /**
1159 * IF_ACMPNE instruction.
1160 */
1161 public static final int IF_ACMPNE = 166;
1162
1163 /**
1164 * GOTO instruction.
1165 */
1166 public static final int GOTO = 167;
1167
1168 /**
1169 * JSR instruction.
1170 */
1171 public static final int JSR = 168;
1172
1173 /**
1174 * RET instruction.
1175 */
1176 public static final int RET = 169;
1177
1178 /**
1179 * TABLESWITCH instruction.
1180 */
1181 public static final int TABLESWITCH = 170;
1182
1183 /**
1184 * LOOKUPSWITCH instruction.
1185 */
1186 public static final int LOOKUPSWITCH = 171;
1187
1188 /**
1189 * IRETURN instruction.
1190 */
1191 public static final int IRETURN = 172;
1192
1193 /**
1194 * LRETURN instruction.
1195 */
1196 public static final int LRETURN = 173;
1197
1198 /**
1199 * FRETURN instruction.
1200 */
1201 public static final int FRETURN = 174;
1202
1203 /**
1204 * DRETURN instruction.
1205 */
1206 public static final int DRETURN = 175;
1207
1208 /**
1209 * ARETURN instruction.
1210 */
1211 public static final int ARETURN = 176;
1212
1213 /**
1214 * RETURN instruction.
1215 */
1216 public static final int RETURN = 177;
1217
1218 /**
1219 * GETSTATIC instruction.
1220 */
1221 public static final int GETSTATIC = 178;
1222
1223 /**
1224 * PUTSTATIC instruction.
1225 */
1226 public static final int PUTSTATIC = 179;
1227
1228 /**
1229 * GETFIELD instruction.
1230 */
1231 public static final int GETFIELD = 180;
1232
1233 /**
1234 * PUTFIELD instruction.
1235 */
1236 public static final int PUTFIELD = 181;
1237
1238 /**
1239 * INVOKEVIRTUAL instruction.
1240 */
1241 public static final int INVOKEVIRTUAL = 182;
1242
1243 /**
1244 * INVOKESPECIAL instruction.
1245 */
1246 public static final int INVOKESPECIAL = 183;
1247
1248 /**
1249 * INVOKESTATIC instruction.
1250 */
1251 public static final int INVOKESTATIC = 184;
1252
1253 /**
1254 * INVOKEINTERFACE instruction.
1255 */
1256 public static final int INVOKEINTERFACE = 185;
1257
1258 /**
1259 * INVOKEDYNAMIC instruction.
1260 */
1261 public static final int INVOKEDYNAMIC = 186;
1262
1263 /**
1264 * NEW instruction.
1265 */
1266 public static final int NEW = 187;
1267
1268 /**
1269 * NEWARRAY instruction.
1270 */
1271 public static final int NEWARRAY = 188;
1272
1273 /**
1274 * ANEWARRAY instruction.
1275 */
1276 public static final int ANEWARRAY = 189;
1277
1278 /**
1279 * ARRAYLENGTH instruction.
1280 */
1281 public static final int ARRAYLENGTH = 190;
1282
1283 /**
1284 * ATHROW instruction.
1285 */
1286 public static final int ATHROW = 191;
1287
1288 /**
1289 * CHECKCAST instruction.
1290 */
1291 public static final int CHECKCAST = 192;
1292
1293 /**
1294 * INSTANCEOF instruction.
1295 */
1296 public static final int INSTANCEOF = 193;
1297
1298 /**
1299 * MONITORENTER instruction.
1300 */
1301 public static final int MONITORENTER = 194;
1302
1303 /**
1304 * MONITOREXIT instruction.
1305 */
1306 public static final int MONITOREXIT = 195;
1307
1308 /**
1309 * WIDE instruction.
1310 */
1311 public static final int WIDE = 196;
1312
1313 /**
1314 * MULTIANEWARRAY instruction.
1315 */
1316 public static final int MULTIANEWARRAY = 197;
1317
1318 /**
1319 * IFNULL instruction.
1320 */
1321 public static final int IFNULL = 198;
1322
1323 /**
1324 * IFNONNULL instruction.
1325 */
1326 public static final int IFNONNULL = 199;
1327
1328 /**
1329 * GOTO_W instruction.
1330 */
1331 public static final int GOTO_W = 200;
1332
1333 /**
1334 * JSR_W instruction.
1335 */
1336 public static final int JSR_W = 201;
1337
1338 // JVM instructions end here
1339
1340 /**
1341 * We classify the JVM instructions into the following categories.
1342 */
1343 enum Category {
1344 OBJECT, FIELD, METHOD1, METHOD2, ARRAY1, ARRAY2, ARRAY3, ARITHMETIC1, ARITHMETIC2, BIT,
1345 COMPARISON, CONVERSION, FLOW_CONTROL1, FLOW_CONTROL2, FLOW_CONTROL3, FLOW_CONTROL4,
1346 LOAD_STORE1, LOAD_STORE2, LOAD_STORE3, LOAD_STORE4, STACK, MISC;
1347 }
1348
1349 // The constants below simply serve as markers. We are not interested in their values, which
1350 // however have been picked so as not to conflict with others.
1351
1352 /**
1353 * Denotes values that are irrelevant to certain instructions. For example, local variable
1354 * index for arithmetic instructions.
1355 */
1356 public static final int IRRELEVANT = -1;
1357
1358 /**
1359 * Denotes values that are not statically known. For example, stack units for field
1360 * instructions.
1361 */
1362 public static final int DYNAMIC = 300;
1363
1364 /**
1365 * Stack units for the instructions that empty the operand stack.
1366 */
1367 public static final int EMPTY_STACK = 301;
1368
1369 /**
1370 * Stack units for the instructions that set the operand stack to unit size.
1371 */
1372 public static final int UNIT_SIZE_STACK = 302;
1373}
1374