1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.bcel;
18
19 /***
20 * Constants for the project, mostly defined in the JVM specification.
21 *
22 * @version $Id: Constants.java 410087 2006-05-29 12:12:19Z tcurdt $
23 * @author <A HREF="mailto:m.dahm@gmx.de">M. Dahm</A>
24 */
25 public interface Constants {
26 /*** Major and minor version of the code.
27 */
28 public final static short MAJOR_1_1 = 45;
29 public final static short MINOR_1_1 = 3;
30 public final static short MAJOR_1_2 = 46;
31 public final static short MINOR_1_2 = 0;
32 public final static short MAJOR_1_3 = 47;
33 public final static short MINOR_1_3 = 0;
34 public final static short MAJOR_1_4 = 48;
35 public final static short MINOR_1_4 = 0;
36 public final static short MAJOR_1_5 = 49;
37 public final static short MINOR_1_5 = 0;
38 public final static short MAJOR = MAJOR_1_1;
39 public final static short MINOR = MINOR_1_1;
40
41 /*** Maximum value for an unsigned short.
42 */
43 public final static int MAX_SHORT = 65535;
44
45 /*** Maximum value for an unsigned byte.
46 */
47 public final static int MAX_BYTE = 255;
48
49 /*** Access flags for classes, fields and methods.
50 */
51 public final static short ACC_PUBLIC = 0x0001;
52 public final static short ACC_PRIVATE = 0x0002;
53 public final static short ACC_PROTECTED = 0x0004;
54 public final static short ACC_STATIC = 0x0008;
55
56 public final static short ACC_FINAL = 0x0010;
57 public final static short ACC_SYNCHRONIZED = 0x0020;
58 public final static short ACC_VOLATILE = 0x0040;
59 public final static short ACC_BRIDGE = 0x0040;
60 public final static short ACC_TRANSIENT = 0x0080;
61 public final static short ACC_VARARGS = 0x0080;
62
63 public final static short ACC_NATIVE = 0x0100;
64 public final static short ACC_INTERFACE = 0x0200;
65 public final static short ACC_ABSTRACT = 0x0400;
66 public final static short ACC_STRICT = 0x0800;
67
68 public final static short ACC_SYNTHETIC = 0x1000;
69 public final static short ACC_ANNOTATION = 0x2000;
70 public final static short ACC_ENUM = 0x4000;
71
72
73 public final static short ACC_SUPER = 0x0020;
74
75 public final static short MAX_ACC_FLAG = ACC_ENUM;
76
77 public final static String[] ACCESS_NAMES = {
78 "public", "private", "protected", "static", "final", "synchronized",
79 "volatile", "transient", "native", "interface", "abstract", "strictfp",
80 "synthetic", "annotation", "enum"
81 };
82
83 /*** Tags in constant pool to denote type of constant.
84 */
85 public final static byte CONSTANT_Utf8 = 1;
86 public final static byte CONSTANT_Integer = 3;
87 public final static byte CONSTANT_Float = 4;
88 public final static byte CONSTANT_Long = 5;
89 public final static byte CONSTANT_Double = 6;
90 public final static byte CONSTANT_Class = 7;
91 public final static byte CONSTANT_Fieldref = 9;
92 public final static byte CONSTANT_String = 8;
93 public final static byte CONSTANT_Methodref = 10;
94 public final static byte CONSTANT_InterfaceMethodref = 11;
95 public final static byte CONSTANT_NameAndType = 12;
96
97 public final static String[] CONSTANT_NAMES = {
98 "", "CONSTANT_Utf8", "", "CONSTANT_Integer",
99 "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double",
100 "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref",
101 "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref",
102 "CONSTANT_NameAndType" };
103
104 /*** The name of the static initializer, also called "class
105 * initialization method" or "interface initialization
106 * method". This is "<clinit>".
107 */
108 public final static String STATIC_INITIALIZER_NAME = "<clinit>";
109
110 /*** The name of every constructor method in a class, also called
111 * "instance initialization method". This is "<init>".
112 */
113 public final static String CONSTRUCTOR_NAME = "<init>";
114
115 /*** The names of the interfaces implemented by arrays */
116 public final static String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"};
117
118 /***
119 * Limitations of the Java Virtual Machine.
120 * See The Java Virtual Machine Specification, Second Edition, page 152, chapter 4.10.
121 */
122 public static final int MAX_CP_ENTRIES = 65535;
123 public static final int MAX_CODE_SIZE = 65536;
124
125 /*** Java VM opcodes.
126 */
127 public static final short NOP = 0;
128 public static final short ACONST_NULL = 1;
129 public static final short ICONST_M1 = 2;
130 public static final short ICONST_0 = 3;
131 public static final short ICONST_1 = 4;
132 public static final short ICONST_2 = 5;
133 public static final short ICONST_3 = 6;
134 public static final short ICONST_4 = 7;
135 public static final short ICONST_5 = 8;
136 public static final short LCONST_0 = 9;
137 public static final short LCONST_1 = 10;
138 public static final short FCONST_0 = 11;
139 public static final short FCONST_1 = 12;
140 public static final short FCONST_2 = 13;
141 public static final short DCONST_0 = 14;
142 public static final short DCONST_1 = 15;
143 public static final short BIPUSH = 16;
144 public static final short SIPUSH = 17;
145 public static final short LDC = 18;
146 public static final short LDC_W = 19;
147 public static final short LDC2_W = 20;
148 public static final short ILOAD = 21;
149 public static final short LLOAD = 22;
150 public static final short FLOAD = 23;
151 public static final short DLOAD = 24;
152 public static final short ALOAD = 25;
153 public static final short ILOAD_0 = 26;
154 public static final short ILOAD_1 = 27;
155 public static final short ILOAD_2 = 28;
156 public static final short ILOAD_3 = 29;
157 public static final short LLOAD_0 = 30;
158 public static final short LLOAD_1 = 31;
159 public static final short LLOAD_2 = 32;
160 public static final short LLOAD_3 = 33;
161 public static final short FLOAD_0 = 34;
162 public static final short FLOAD_1 = 35;
163 public static final short FLOAD_2 = 36;
164 public static final short FLOAD_3 = 37;
165 public static final short DLOAD_0 = 38;
166 public static final short DLOAD_1 = 39;
167 public static final short DLOAD_2 = 40;
168 public static final short DLOAD_3 = 41;
169 public static final short ALOAD_0 = 42;
170 public static final short ALOAD_1 = 43;
171 public static final short ALOAD_2 = 44;
172 public static final short ALOAD_3 = 45;
173 public static final short IALOAD = 46;
174 public static final short LALOAD = 47;
175 public static final short FALOAD = 48;
176 public static final short DALOAD = 49;
177 public static final short AALOAD = 50;
178 public static final short BALOAD = 51;
179 public static final short CALOAD = 52;
180 public static final short SALOAD = 53;
181 public static final short ISTORE = 54;
182 public static final short LSTORE = 55;
183 public static final short FSTORE = 56;
184 public static final short DSTORE = 57;
185 public static final short ASTORE = 58;
186 public static final short ISTORE_0 = 59;
187 public static final short ISTORE_1 = 60;
188 public static final short ISTORE_2 = 61;
189 public static final short ISTORE_3 = 62;
190 public static final short LSTORE_0 = 63;
191 public static final short LSTORE_1 = 64;
192 public static final short LSTORE_2 = 65;
193 public static final short LSTORE_3 = 66;
194 public static final short FSTORE_0 = 67;
195 public static final short FSTORE_1 = 68;
196 public static final short FSTORE_2 = 69;
197 public static final short FSTORE_3 = 70;
198 public static final short DSTORE_0 = 71;
199 public static final short DSTORE_1 = 72;
200 public static final short DSTORE_2 = 73;
201 public static final short DSTORE_3 = 74;
202 public static final short ASTORE_0 = 75;
203 public static final short ASTORE_1 = 76;
204 public static final short ASTORE_2 = 77;
205 public static final short ASTORE_3 = 78;
206 public static final short IASTORE = 79;
207 public static final short LASTORE = 80;
208 public static final short FASTORE = 81;
209 public static final short DASTORE = 82;
210 public static final short AASTORE = 83;
211 public static final short BASTORE = 84;
212 public static final short CASTORE = 85;
213 public static final short SASTORE = 86;
214 public static final short POP = 87;
215 public static final short POP2 = 88;
216 public static final short DUP = 89;
217 public static final short DUP_X1 = 90;
218 public static final short DUP_X2 = 91;
219 public static final short DUP2 = 92;
220 public static final short DUP2_X1 = 93;
221 public static final short DUP2_X2 = 94;
222 public static final short SWAP = 95;
223 public static final short IADD = 96;
224 public static final short LADD = 97;
225 public static final short FADD = 98;
226 public static final short DADD = 99;
227 public static final short ISUB = 100;
228 public static final short LSUB = 101;
229 public static final short FSUB = 102;
230 public static final short DSUB = 103;
231 public static final short IMUL = 104;
232 public static final short LMUL = 105;
233 public static final short FMUL = 106;
234 public static final short DMUL = 107;
235 public static final short IDIV = 108;
236 public static final short LDIV = 109;
237 public static final short FDIV = 110;
238 public static final short DDIV = 111;
239 public static final short IREM = 112;
240 public static final short LREM = 113;
241 public static final short FREM = 114;
242 public static final short DREM = 115;
243 public static final short INEG = 116;
244 public static final short LNEG = 117;
245 public static final short FNEG = 118;
246 public static final short DNEG = 119;
247 public static final short ISHL = 120;
248 public static final short LSHL = 121;
249 public static final short ISHR = 122;
250 public static final short LSHR = 123;
251 public static final short IUSHR = 124;
252 public static final short LUSHR = 125;
253 public static final short IAND = 126;
254 public static final short LAND = 127;
255 public static final short IOR = 128;
256 public static final short LOR = 129;
257 public static final short IXOR = 130;
258 public static final short LXOR = 131;
259 public static final short IINC = 132;
260 public static final short I2L = 133;
261 public static final short I2F = 134;
262 public static final short I2D = 135;
263 public static final short L2I = 136;
264 public static final short L2F = 137;
265 public static final short L2D = 138;
266 public static final short F2I = 139;
267 public static final short F2L = 140;
268 public static final short F2D = 141;
269 public static final short D2I = 142;
270 public static final short D2L = 143;
271 public static final short D2F = 144;
272 public static final short I2B = 145;
273 public static final short INT2BYTE = 145;
274 public static final short I2C = 146;
275 public static final short INT2CHAR = 146;
276 public static final short I2S = 147;
277 public static final short INT2SHORT = 147;
278 public static final short LCMP = 148;
279 public static final short FCMPL = 149;
280 public static final short FCMPG = 150;
281 public static final short DCMPL = 151;
282 public static final short DCMPG = 152;
283 public static final short IFEQ = 153;
284 public static final short IFNE = 154;
285 public static final short IFLT = 155;
286 public static final short IFGE = 156;
287 public static final short IFGT = 157;
288 public static final short IFLE = 158;
289 public static final short IF_ICMPEQ = 159;
290 public static final short IF_ICMPNE = 160;
291 public static final short IF_ICMPLT = 161;
292 public static final short IF_ICMPGE = 162;
293 public static final short IF_ICMPGT = 163;
294 public static final short IF_ICMPLE = 164;
295 public static final short IF_ACMPEQ = 165;
296 public static final short IF_ACMPNE = 166;
297 public static final short GOTO = 167;
298 public static final short JSR = 168;
299 public static final short RET = 169;
300 public static final short TABLESWITCH = 170;
301 public static final short LOOKUPSWITCH = 171;
302 public static final short IRETURN = 172;
303 public static final short LRETURN = 173;
304 public static final short FRETURN = 174;
305 public static final short DRETURN = 175;
306 public static final short ARETURN = 176;
307 public static final short RETURN = 177;
308 public static final short GETSTATIC = 178;
309 public static final short PUTSTATIC = 179;
310 public static final short GETFIELD = 180;
311 public static final short PUTFIELD = 181;
312 public static final short INVOKEVIRTUAL = 182;
313 public static final short INVOKESPECIAL = 183;
314 public static final short INVOKENONVIRTUAL = 183;
315 public static final short INVOKESTATIC = 184;
316 public static final short INVOKEINTERFACE = 185;
317 public static final short NEW = 187;
318 public static final short NEWARRAY = 188;
319 public static final short ANEWARRAY = 189;
320 public static final short ARRAYLENGTH = 190;
321 public static final short ATHROW = 191;
322 public static final short CHECKCAST = 192;
323 public static final short INSTANCEOF = 193;
324 public static final short MONITORENTER = 194;
325 public static final short MONITOREXIT = 195;
326 public static final short WIDE = 196;
327 public static final short MULTIANEWARRAY = 197;
328 public static final short IFNULL = 198;
329 public static final short IFNONNULL = 199;
330 public static final short GOTO_W = 200;
331 public static final short JSR_W = 201;
332
333 /***
334 * Non-legal opcodes, may be used by JVM internally.
335 */
336 public static final short BREAKPOINT = 202;
337 public static final short LDC_QUICK = 203;
338 public static final short LDC_W_QUICK = 204;
339 public static final short LDC2_W_QUICK = 205;
340 public static final short GETFIELD_QUICK = 206;
341 public static final short PUTFIELD_QUICK = 207;
342 public static final short GETFIELD2_QUICK = 208;
343 public static final short PUTFIELD2_QUICK = 209;
344 public static final short GETSTATIC_QUICK = 210;
345 public static final short PUTSTATIC_QUICK = 211;
346 public static final short GETSTATIC2_QUICK = 212;
347 public static final short PUTSTATIC2_QUICK = 213;
348 public static final short INVOKEVIRTUAL_QUICK = 214;
349 public static final short INVOKENONVIRTUAL_QUICK = 215;
350 public static final short INVOKESUPER_QUICK = 216;
351 public static final short INVOKESTATIC_QUICK = 217;
352 public static final short INVOKEINTERFACE_QUICK = 218;
353 public static final short INVOKEVIRTUALOBJECT_QUICK = 219;
354 public static final short NEW_QUICK = 221;
355 public static final short ANEWARRAY_QUICK = 222;
356 public static final short MULTIANEWARRAY_QUICK = 223;
357 public static final short CHECKCAST_QUICK = 224;
358 public static final short INSTANCEOF_QUICK = 225;
359 public static final short INVOKEVIRTUAL_QUICK_W = 226;
360 public static final short GETFIELD_QUICK_W = 227;
361 public static final short PUTFIELD_QUICK_W = 228;
362 public static final short IMPDEP1 = 254;
363 public static final short IMPDEP2 = 255;
364
365 /***
366 * For internal purposes only.
367 */
368 public static final short PUSH = 4711;
369 public static final short SWITCH = 4712;
370
371 /***
372 * Illegal codes
373 */
374 public static final short UNDEFINED = -1;
375 public static final short UNPREDICTABLE = -2;
376 public static final short RESERVED = -3;
377 public static final String ILLEGAL_OPCODE = "<illegal opcode>";
378 public static final String ILLEGAL_TYPE = "<illegal type>";
379
380 public static final byte T_BOOLEAN = 4;
381 public static final byte T_CHAR = 5;
382 public static final byte T_FLOAT = 6;
383 public static final byte T_DOUBLE = 7;
384 public static final byte T_BYTE = 8;
385 public static final byte T_SHORT = 9;
386 public static final byte T_INT = 10;
387 public static final byte T_LONG = 11;
388
389 public static final byte T_VOID = 12;
390 public static final byte T_ARRAY = 13;
391 public static final byte T_OBJECT = 14;
392 public static final byte T_REFERENCE = 14;
393 public static final byte T_UNKNOWN = 15;
394 public static final byte T_ADDRESS = 16;
395
396 /*** The primitive type names corresponding to the T_XX constants,
397 * e.g., TYPE_NAMES[T_INT] = "int"
398 */
399 public static final String[] TYPE_NAMES = {
400 ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE,
401 "boolean", "char", "float", "double", "byte", "short", "int", "long",
402 "void", "array", "object", "unknown"
403 };
404
405 /*** The primitive class names corresponding to the T_XX constants,
406 * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
407 */
408 public static final String[] CLASS_TYPE_NAMES = {
409 ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE,
410 "java.lang.Boolean", "java.lang.Character", "java.lang.Float",
411 "java.lang.Double", "java.lang.Byte", "java.lang.Short",
412 "java.lang.Integer", "java.lang.Long", "java.lang.Void",
413 ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE
414 };
415
416 /*** The signature characters corresponding to primitive types,
417 * e.g., SHORT_TYPE_NAMES[T_INT] = "I"
418 */
419 public static final String[] SHORT_TYPE_NAMES = {
420 ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE,
421 "Z", "C", "F", "D", "B", "S", "I", "J",
422 "V", ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE
423 };
424
425 /***
426 * Number of byte code operands, i.e., number of bytes after the tag byte
427 * itself.
428 */
429 public static final short[] NO_OF_OPERANDS = {
430 0
431 0
432 0
433 0
434 1
435 1
436 0
437 0
438 0
439 0
440 0
441 0
442 0
443 1
444 1
445 0
446 0
447 0
448 0
449 0
450 0
451 0
452 0
453 0
454 0
455 0
456 0
457 0
458 0
459 0
460 2
461 0
462 0
463 0
464 2
465 2
466 2
467 2
468 0
469 0
470 2
471 2
472 4
473 1
474 0
475 2
476 0
477 2
478 4
479 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
480 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
481 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
482 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
483 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
484 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
485 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
486 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
487 UNDEFINED, UNDEFINED, RESERVED
488 };
489
490 /***
491 * How the byte code operands are to be interpreted.
492 */
493 public static final short[][] TYPE_OF_OPERANDS = {
494 {}
495 {}
496 {}
497 {}
498 {T_BYTE}
499 {T_SHORT}
500 {T_BYTE}
501 {T_BYTE}
502 {}
503 {}
504 {}
505 {}
506 {}
507 {}
508 {}
509 {T_BYTE}
510 {T_BYTE}
511 {}
512 {}
513 {}
514 {}
515 {}
516 {}
517 {}
518 {}
519 {}
520 {}
521 {}
522 {}
523 {}
524 {}
525 {}
526 {}
527 {}
528 {}
529 {}
530 {}
531 {T_SHORT}
532 {T_SHORT}
533 {T_SHORT}
534 {T_SHORT}
535 {T_SHORT}
536 {T_SHORT}
537 {T_BYTE}
538 {}
539 {}
540 {T_SHORT}
541 {T_SHORT}
542 {T_SHORT}
543 {T_SHORT, T_BYTE, T_BYTE}
544 {T_SHORT}
545 {T_SHORT}
546 {T_SHORT}
547 {}
548 {T_SHORT, T_BYTE}
549 {T_SHORT}
550 {}
551 {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
552 {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
553 {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
554 {}
555 };
556
557 /***
558 * Names of opcodes.
559 */
560 public static final String[] OPCODE_NAMES = {
561 "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1",
562 "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0",
563 "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0",
564 "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload",
565 "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2",
566 "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0",
567 "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2",
568 "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload",
569 "laload", "faload", "daload", "aaload", "baload", "caload", "saload",
570 "istore", "lstore", "fstore", "dstore", "astore", "istore_0",
571 "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1",
572 "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2",
573 "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3",
574 "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore",
575 "fastore", "dastore", "aastore", "bastore", "castore", "sastore",
576 "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1",
577 "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub",
578 "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv",
579 "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg",
580 "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr",
581 "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f",
582 "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f",
583 "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg",
584 "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle",
585 "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt",
586 "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret",
587 "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn",
588 "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield",
589 "putfield", "invokevirtual", "invokespecial", "invokestatic",
590 "invokeinterface", ILLEGAL_OPCODE, "new", "newarray", "anewarray",
591 "arraylength", "athrow", "checkcast", "instanceof", "monitorenter",
592 "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull",
593 "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE,
594 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
595 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
596 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
597 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
598 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
599 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
600 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
601 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
602 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
603 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
604 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
605 ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
606 ILLEGAL_OPCODE, "impdep1", "impdep2"
607 };
608
609 /***
610 * Number of words consumed on operand stack by instructions.
611 */
612 public static final int[] CONSUME_STACK = {
613 0
614 0
615 0
616 0
617 0
618 0
619 0
620 0
621 2
622 1
623 1
624 2
625 1
626 1
627 3
628 1
629 4
630 2
631 2
632 1
633 2
634 1
635 1
636 4
637 1
638 2
639 0
640 2
641 UNPREDICTABLE
642 UNPREDICTABLE
643 UNPREDICTABLE
644 UNPREDICTABLE
645 1
646 1
647 0
648 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
649 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
650 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
651 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
652 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
653 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
654 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
655 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
656 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
657 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
658 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
659 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
660 UNDEFINED, UNPREDICTABLE
661 };
662
663 /***
664 * Number of words produced onto operand stack by instructions.
665 */
666 public static final int[] PRODUCE_STACK = {
667 0
668 1
669 2
670 2
671 2
672 1
673 1
674 2
675 2
676 0
677 0
678 0
679 0
680 0
681 0
682 0
683 6
684 1
685 1
686 1
687 1
688 0
689 2
690 1
691 1
692 0
693 0
694 0
695 0
696 UNPREDICTABLE
697 UNPREDICTABLE
698 UNPREDICTABLE
699 1
700 0
701 0
702 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
703 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
704 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
705 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
706 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
707 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
708 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
709 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
710 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
711 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
712 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
713 UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
714 UNDEFINED, UNPREDICTABLE
715 };
716
717 /*** Attributes and their corresponding names.
718 */
719 public static final byte ATTR_UNKNOWN = -1;
720 public static final byte ATTR_SOURCE_FILE = 0;
721 public static final byte ATTR_CONSTANT_VALUE = 1;
722 public static final byte ATTR_CODE = 2;
723 public static final byte ATTR_EXCEPTIONS = 3;
724 public static final byte ATTR_LINE_NUMBER_TABLE = 4;
725 public static final byte ATTR_LOCAL_VARIABLE_TABLE = 5;
726 public static final byte ATTR_INNER_CLASSES = 6;
727 public static final byte ATTR_SYNTHETIC = 7;
728 public static final byte ATTR_DEPRECATED = 8;
729 public static final byte ATTR_PMG = 9;
730 public static final byte ATTR_SIGNATURE = 10;
731 public static final byte ATTR_STACK_MAP = 11;
732 public static final byte ATTR_RUNTIMEVISIBLE_ANNOTATIONS = 12;
733 public static final byte ATTR_RUNTIMEINVISIBLE_ANNOTATIONS = 13;
734 public static final byte ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS = 14;
735 public static final byte ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS = 15;
736 public static final byte ATTR_ANNOTATION_DEFAULT = 16;
737
738 public static final short KNOWN_ATTRIBUTES = 12;
739
740 public static final String[] ATTRIBUTE_NAMES = {
741 "SourceFile", "ConstantValue", "Code", "Exceptions",
742 "LineNumberTable", "LocalVariableTable",
743 "InnerClasses", "Synthetic", "Deprecated",
744 "PMGClass", "Signature", "StackMap",
745 "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
746 "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations",
747 "AnnotationDefault"
748 };
749
750 /*** Constants used in the StackMap attribute.
751 */
752 public static final byte ITEM_Bogus = 0;
753 public static final byte ITEM_Integer = 1;
754 public static final byte ITEM_Float = 2;
755 public static final byte ITEM_Double = 3;
756 public static final byte ITEM_Long = 4;
757 public static final byte ITEM_Null = 5;
758 public static final byte ITEM_InitObject = 6;
759 public static final byte ITEM_Object = 7;
760 public static final byte ITEM_NewObject = 8;
761
762 public static final String[] ITEM_NAMES = {
763 "Bogus", "Integer", "Float", "Double", "Long",
764 "Null", "InitObject", "Object", "NewObject"
765 };
766 }