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