001: /*
002: * Janino - An embedded Java[TM] compiler
003: *
004: * Copyright (c) 2006, Arno Unkrig
005: * All rights reserved.
006: *
007: * Redistribution and use in source and binary forms, with or without
008: * modification, are permitted provided that the following conditions
009: * are met:
010: *
011: * 1. Redistributions of source code must retain the above copyright
012: * notice, this list of conditions and the following disclaimer.
013: * 2. Redistributions in binary form must reproduce the above
014: * copyright notice, this list of conditions and the following
015: * disclaimer in the documentation and/or other materials
016: * provided with the distribution.
017: * 3. The name of the author may not be used to endorse or promote
018: * products derived from this software without specific prior
019: * written permission.
020: *
021: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
022: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
023: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
024: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
025: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
026: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
027: * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
028: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
029: * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
030: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
031: * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
032: */
033:
034: package org.codehaus.janino;
035:
036: /**
037: * Definitions of Java bytecode opcodes.
038: */
039:
040: /*package*/interface Opcode {
041: public final static byte AALOAD = 50;
042: public final static byte AASTORE = 83;
043: public final static byte ACONST_NULL = 1;
044: public final static byte ALOAD = 25;
045: public final static byte ALOAD_0 = 42;
046: public final static byte ALOAD_1 = 43;
047: public final static byte ALOAD_2 = 44;
048: public final static byte ALOAD_3 = 45;
049: public final static byte ANEWARRAY = (byte) 189;
050: public final static byte ARETURN = (byte) 176;
051: public final static byte ARRAYLENGTH = (byte) 190;
052: public final static byte ASTORE = 58;
053: public final static byte ASTORE_0 = 75;
054: public final static byte ASTORE_1 = 76;
055: public final static byte ASTORE_2 = 77;
056: public final static byte ASTORE_3 = 78;
057: public final static byte ATHROW = (byte) 191;
058: public final static byte BALOAD = 51;
059: public final static byte BASTORE = 84;
060: public final static byte BIPUSH = 16;
061: public final static byte CALOAD = 52;
062: public final static byte CASTORE = 85;
063: public final static byte CHECKCAST = (byte) 192;
064: public final static byte D2F = (byte) 144;
065: public final static byte D2I = (byte) 142;
066: public final static byte D2L = (byte) 143;
067: public final static byte DADD = 99;
068: public final static byte DALOAD = 49;
069: public final static byte DASTORE = 82;
070: public final static byte DCMPG = (byte) 152;
071: public final static byte DCMPL = (byte) 151;
072: public final static byte DCONST_0 = 14;
073: public final static byte DCONST_1 = 15;
074: public final static byte DDIV = 111;
075: public final static byte DLOAD = 24;
076: public final static byte DLOAD_0 = 38;
077: public final static byte DLOAD_1 = 39;
078: public final static byte DLOAD_2 = 40;
079: public final static byte DLOAD_3 = 41;
080: public final static byte DMUL = 107;
081: public final static byte DNEG = 119;
082: public final static byte DREM = 115;
083: public final static byte DRETURN = (byte) 175;
084: public final static byte DSTORE = 57;
085: public final static byte DSTORE_0 = 71;
086: public final static byte DSTORE_1 = 72;
087: public final static byte DSTORE_2 = 73;
088: public final static byte DSTORE_3 = 74;
089: public final static byte DSUB = 103;
090: public final static byte DUP = 89;
091: public final static byte DUP_X1 = 90;
092: public final static byte DUP_X2 = 91;
093: public final static byte DUP2 = 92;
094: public final static byte DUP2_X1 = 93;
095: public final static byte DUP2_X2 = 94;
096: public final static byte F2D = (byte) 141;
097: public final static byte F2I = (byte) 139;
098: public final static byte F2L = (byte) 140;
099: public final static byte FADD = 98;
100: public final static byte FALOAD = 48;
101: public final static byte FASTORE = 81;
102: public final static byte FCMPG = (byte) 150;
103: public final static byte FCMPL = (byte) 149;
104: public final static byte FCONST_0 = 11;
105: public final static byte FCONST_1 = 12;
106: public final static byte FCONST_2 = 13;
107: public final static byte FDIV = 110;
108: public final static byte FLOAD = 23;
109: public final static byte FLOAD_0 = 34;
110: public final static byte FLOAD_1 = 35;
111: public final static byte FLOAD_2 = 36;
112: public final static byte FLOAD_3 = 37;
113: public final static byte FMUL = 106;
114: public final static byte FNEG = 118;
115: public final static byte FREM = 114;
116: public final static byte FRETURN = (byte) 174;
117: public final static byte FSTORE = 56;
118: public final static byte FSTORE_0 = 67;
119: public final static byte FSTORE_1 = 68;
120: public final static byte FSTORE_2 = 69;
121: public final static byte FSTORE_3 = 70;
122: public final static byte FSUB = 102;
123: public final static byte GETFIELD = (byte) 180;
124: public final static byte GETSTATIC = (byte) 178;
125: public final static byte GOTO = (byte) 167;
126: public final static byte GOTO_W = (byte) 200;
127: public final static byte I2B = (byte) 145;
128: public final static byte I2C = (byte) 146;
129: public final static byte I2D = (byte) 135;
130: public final static byte I2F = (byte) 134;
131: public final static byte I2L = (byte) 133;
132: public final static byte I2S = (byte) 147;
133: public final static byte IADD = 96;
134: public final static byte IALOAD = 46;
135: public final static byte IAND = 126;
136: public final static byte IASTORE = 79;
137: public final static byte ICONST_M1 = 2;
138: public final static byte ICONST_0 = 3;
139: public final static byte ICONST_1 = 4;
140: public final static byte ICONST_2 = 5;
141: public final static byte ICONST_3 = 6;
142: public final static byte ICONST_4 = 7;
143: public final static byte ICONST_5 = 8;
144: public final static byte IDIV = 108;
145: public final static byte IF_ACMPEQ = (byte) 165;
146: public final static byte IF_ACMPNE = (byte) 166;
147: public final static byte IF_ICMPEQ = (byte) 159;
148: public final static byte IF_ICMPNE = (byte) 160;
149: public final static byte IF_ICMPLT = (byte) 161;
150: public final static byte IF_ICMPGE = (byte) 162;
151: public final static byte IF_ICMPGT = (byte) 163;
152: public final static byte IF_ICMPLE = (byte) 164;
153: public final static byte IFEQ = (byte) 153;
154: public final static byte IFNE = (byte) 154;
155: public final static byte IFLT = (byte) 155;
156: public final static byte IFGE = (byte) 156;
157: public final static byte IFGT = (byte) 157;
158: public final static byte IFLE = (byte) 158;
159: public final static byte IFNONNULL = (byte) 199;
160: public final static byte IFNULL = (byte) 198;
161: public final static byte IINC = (byte) 132;
162: public final static byte ILOAD = 21;
163: public final static byte ILOAD_0 = 26;
164: public final static byte ILOAD_1 = 27;
165: public final static byte ILOAD_2 = 28;
166: public final static byte ILOAD_3 = 29;
167: public final static byte IMUL = 104;
168: public final static byte INEG = 116;
169: public final static byte INSTANCEOF = (byte) 193;
170: public final static byte INVOKEINTERFACE = (byte) 185;
171: public final static byte INVOKESPECIAL = (byte) 183;
172: public final static byte INVOKESTATIC = (byte) 184;
173: public final static byte INVOKEVIRTUAL = (byte) 182;
174: public final static byte IOR = (byte) 128;
175: public final static byte IREM = 112;
176: public final static byte IRETURN = (byte) 172;
177: public final static byte ISHL = 120;
178: public final static byte ISHR = 122;
179: public final static byte ISTORE = 54;
180: public final static byte ISTORE_0 = 59;
181: public final static byte ISTORE_1 = 60;
182: public final static byte ISTORE_2 = 61;
183: public final static byte ISTORE_3 = 62;
184: public final static byte ISUB = 100;
185: public final static byte IUSHR = 124;
186: public final static byte IXOR = (byte) 130;
187: public final static byte JSR = (byte) 168;
188: public final static byte JSR_W = (byte) 201;
189: public final static byte L2D = (byte) 138;
190: public final static byte L2F = (byte) 137;
191: public final static byte L2I = (byte) 136;
192: public final static byte LADD = 97;
193: public final static byte LALOAD = 47;
194: public final static byte LAND = 127;
195: public final static byte LASTORE = 80;
196: public final static byte LCMP = (byte) 148;
197: public final static byte LCONST_0 = 9;
198: public final static byte LCONST_1 = 10;
199: public final static byte LDC = 18;
200: public final static byte LDC_W = 19;
201: public final static byte LDC2_W = 20;
202: public final static byte LDIV = 109;
203: public final static byte LLOAD = 22;
204: public final static byte LLOAD_0 = 30;
205: public final static byte LLOAD_1 = 31;
206: public final static byte LLOAD_2 = 32;
207: public final static byte LLOAD_3 = 33;
208: public final static byte LMUL = 105;
209: public final static byte LNEG = 117;
210: public final static byte LOOKUPSWITCH = (byte) 171;
211: public final static byte LOR = (byte) 129;
212: public final static byte LREM = 113;
213: public final static byte LRETURN = (byte) 173;
214: public final static byte LSHL = 121;
215: public final static byte LSHR = 123;
216: public final static byte LSTORE = 55;
217: public final static byte LSTORE_0 = 63;
218: public final static byte LSTORE_1 = 64;
219: public final static byte LSTORE_2 = 65;
220: public final static byte LSTORE_3 = 66;
221: public final static byte LSUB = 101;
222: public final static byte LUSHR = 125;
223: public final static byte LXOR = (byte) 131;
224: public final static byte MONITORENTER = (byte) 194;
225: public final static byte MONITOREXIT = (byte) 195;
226: public final static byte MULTIANEWARRAY = (byte) 197;
227: public final static byte NEW = (byte) 187;
228: public final static byte NEWARRAY = (byte) 188;
229: public final static byte NOP = 0;
230: public final static byte POP = 87;
231: public final static byte POP2 = 88;
232: public final static byte PUTFIELD = (byte) 181;
233: public final static byte PUTSTATIC = (byte) 179;
234: public final static byte RET = (byte) 169;
235: public final static byte RETURN = (byte) 177;
236: public final static byte SALOAD = 53;
237: public final static byte SASTORE = 86;
238: public final static byte SIPUSH = 17;
239: public final static byte SWAP = 95;
240: public final static byte TABLESWITCH = (byte) 170;
241: public final static byte WIDE = (byte) 196;
242:
243: /**
244: * Constants for the "OPCODE_PROPERTIES" array.
245: */
246: public static final short INVALID_OPCODE = -1;
247:
248: // "Stack delta" constants.
249: public static final short SD_MASK = 31;
250: public static final short SD_M4 = 0;
251: public static final short SD_M3 = 1;
252: public static final short SD_M2 = 2;
253: public static final short SD_M1 = 3;
254: public static final short SD_P0 = 4;
255: public static final short SD_P1 = 5;
256: public static final short SD_P2 = 6;
257: public static final short SD_0 = 7;
258: public static final short SD_GETFIELD = 9;
259: public static final short SD_GETSTATIC = 10;
260: public static final short SD_PUTFIELD = 11;
261: public static final short SD_PUTSTATIC = 12;
262: public static final short SD_INVOKEVIRTUAL = 13;
263: public static final short SD_INVOKESPECIAL = 14;
264: public static final short SD_INVOKESTATIC = 15;
265: public static final short SD_INVOKEINTERFACE = 16;
266: public static final short SD_MULTIANEWARRAY = 18;
267:
268: // Operand 1 types.
269: public static final short OP1_MASK = 15 * 32;
270: public static final short OP1_SB = 1 * 32;
271: public static final short OP1_UB = 2 * 32;
272: public static final short OP1_SS = 3 * 32;
273: public static final short OP1_CP1 = 4 * 32;
274: public static final short OP1_CP2 = 5 * 32;
275: public static final short OP1_LV1 = 6 * 32;
276: public static final short OP1_LV2 = 7 * 32;
277: public static final short OP1_BO2 = 8 * 32;
278: public static final short OP1_BO4 = 9 * 32;
279: public static final short OP1_LOOKUPSWITCH = 10 * 32;
280: public static final short OP1_TABLESWITCH = 11 * 32;
281: public static final short OP1_JSR = 12 * 32;
282:
283: // Operand 2 types.
284: public static final short OP2_MASK = 3 * 512;
285: public static final short OP2_SB = 1 * 512;
286: public static final short OP2_SS = 2 * 512;
287:
288: // Operand 3 types.
289: public static final short OP3_MASK = 1 * 2048;
290: public static final short OP3_SB = 1 * 2048;
291:
292: // Implicit operands.
293: public static final short IO_MASK = 7 * 4096;
294: public static final short IO_LV_0 = 1 * 4096;
295: public static final short IO_LV_1 = 2 * 4096;
296: public static final short IO_LV_2 = 3 * 4096;
297: public static final short IO_LV_3 = 4 * 4096;
298:
299: public static final short NO_FALLTHROUGH = (short) 32768;
300:
301: public static final short[] OPCODE_PROPERTIES = {
302: /* 0*//*NOP*/Opcode.SD_P0,
303: /*ACONST_NULL*/Opcode.SD_P1,
304: /*ICONST_M1*/Opcode.SD_P1,
305: /*ICONST_0*/Opcode.SD_P1,
306: /*ICONST_1*/Opcode.SD_P1,
307: /*ICONST_2*/Opcode.SD_P1,
308: /*ICONST_3*/Opcode.SD_P1,
309: /*ICONST_4*/Opcode.SD_P1,
310: /*ICONST_5*/Opcode.SD_P1,
311: /*LCONST_0*/Opcode.SD_P2,
312: /* 10*//*LCONST_1*/Opcode.SD_P2,
313: /*FCONST_0*/Opcode.SD_P1,
314: /*FCONST_1*/Opcode.SD_P1,
315: /*FCONST_2*/Opcode.SD_P1,
316: /*DCONST_0*/Opcode.SD_P2,
317: /*DCONST_1*/Opcode.SD_P2,
318: /*BIPUSH*/Opcode.SD_P1 | Opcode.OP1_SB,
319: /*SIPUSH*/Opcode.SD_P1 | Opcode.OP1_SS,
320: /*LDC*/Opcode.SD_P1 | Opcode.OP1_CP1,
321: /*LDC_W*/Opcode.SD_P1 | Opcode.OP1_CP2,
322: /* 20*//*LDC2_W*/Opcode.SD_P2 | Opcode.OP1_CP2,
323: /*ILOAD*/Opcode.SD_P1 | Opcode.OP1_LV1,
324: /*LLOAD*/Opcode.SD_P2 | Opcode.OP1_LV1,
325: /*FLOAD*/Opcode.SD_P1 | Opcode.OP1_LV1,
326: /*DLOAD*/Opcode.SD_P2 | Opcode.OP1_LV1,
327: /*ALOAD*/Opcode.SD_P1 | Opcode.OP1_LV1,
328: /*ILOAD_0*/Opcode.SD_P1 | Opcode.IO_LV_0,
329: /*ILOAD_1*/Opcode.SD_P1 | Opcode.IO_LV_1,
330: /*ILOAD_2*/Opcode.SD_P1 | Opcode.IO_LV_2,
331: /*ILOAD_3*/Opcode.SD_P1 | Opcode.IO_LV_3,
332: /* 30*//*LLOAD_0*/Opcode.SD_P2 | Opcode.IO_LV_0,
333: /*LLOAD_1*/Opcode.SD_P2 | Opcode.IO_LV_1,
334: /*LLOAD_2*/Opcode.SD_P2 | Opcode.IO_LV_2,
335: /*LLOAD_3*/Opcode.SD_P2 | Opcode.IO_LV_3,
336: /*FLOAD_0*/Opcode.SD_P1 | Opcode.IO_LV_0,
337: /*FLOAD_1*/Opcode.SD_P1 | Opcode.IO_LV_1,
338: /*FLOAD_2*/Opcode.SD_P1 | Opcode.IO_LV_2,
339: /*FLOAD_3*/Opcode.SD_P1 | Opcode.IO_LV_3,
340: /*DLOAD_0*/Opcode.SD_P2 | Opcode.IO_LV_0,
341: /*DLOAD_1*/Opcode.SD_P2 | Opcode.IO_LV_1,
342: /* 40*//*DLOAD_2*/Opcode.SD_P2 | Opcode.IO_LV_2,
343: /*DLOAD_3*/Opcode.SD_P2 | Opcode.IO_LV_3,
344: /*ALOAD_0*/Opcode.SD_P1 | Opcode.IO_LV_0,
345: /*ALOAD_1*/Opcode.SD_P1 | Opcode.IO_LV_1,
346: /*ALOAD_2*/Opcode.SD_P1 | Opcode.IO_LV_2,
347: /*ALOAD_3*/Opcode.SD_P1 | Opcode.IO_LV_3,
348: /*IALOAD*/Opcode.SD_M1,
349: /*LALOAD*/Opcode.SD_P0,
350: /*FALOAD*/Opcode.SD_M1,
351: /*DALOAD*/Opcode.SD_P0,
352: /* 50*//*AALOAD*/Opcode.SD_M1,
353: /*BALOAD*/Opcode.SD_M1,
354: /*CALOAD*/Opcode.SD_M1,
355: /*SALOAD*/Opcode.SD_M1,
356: /*ISTORE*/Opcode.SD_M1 | Opcode.OP1_LV1,
357: /*LSTORE*/Opcode.SD_M2 | Opcode.OP1_LV1,
358: /*FSTORE*/Opcode.SD_M1 | Opcode.OP1_LV1,
359: /*DSTORE*/Opcode.SD_M2 | Opcode.OP1_LV1,
360: /*ASTORE*/Opcode.SD_M1 | Opcode.OP1_LV1,
361: /*ISTORE_0*/Opcode.SD_M1 | Opcode.IO_LV_0,
362: /* 60*//*ISTORE_1*/Opcode.SD_M1 | Opcode.IO_LV_1,
363: /*ISTORE_2*/Opcode.SD_M1 | Opcode.IO_LV_2,
364: /*ISTORE_3*/Opcode.SD_M1 | Opcode.IO_LV_3,
365: /*LSTORE_0*/Opcode.SD_M2 | Opcode.IO_LV_0,
366: /*LSTORE_1*/Opcode.SD_M2 | Opcode.IO_LV_1,
367: /*LSTORE_2*/Opcode.SD_M2 | Opcode.IO_LV_2,
368: /*LSTORE_3*/Opcode.SD_M2 | Opcode.IO_LV_3,
369: /*FSTORE_0*/Opcode.SD_M1 | Opcode.IO_LV_0,
370: /*FSTORE_1*/Opcode.SD_M1 | Opcode.IO_LV_1,
371: /*FSTORE_2*/Opcode.SD_M1 | Opcode.IO_LV_2,
372: /* 70*//*FSTORE_3*/Opcode.SD_M1 | Opcode.IO_LV_3,
373: /*DSTORE_0*/Opcode.SD_M2 | Opcode.IO_LV_0,
374: /*DSTORE_1*/Opcode.SD_M2 | Opcode.IO_LV_1,
375: /*DSTORE_2*/Opcode.SD_M2 | Opcode.IO_LV_2,
376: /*DSTORE_3*/Opcode.SD_M2 | Opcode.IO_LV_3,
377: /*ASTORE_0*/Opcode.SD_M1 | Opcode.IO_LV_0,
378: /*ASTORE_1*/Opcode.SD_M1 | Opcode.IO_LV_1,
379: /*ASTORE_2*/Opcode.SD_M1 | Opcode.IO_LV_2,
380: /*ASTORE_3*/Opcode.SD_M1 | Opcode.IO_LV_3,
381: /*IASTORE*/Opcode.SD_M3,
382: /* 80*//*LASTORE*/Opcode.SD_M4,
383: /*FASTORE*/Opcode.SD_M3,
384: /*DASTORE*/Opcode.SD_M4,
385: /*AASTORE*/Opcode.SD_M3,
386: /*BASTORE*/Opcode.SD_M3,
387: /*CASTORE*/Opcode.SD_M3,
388: /*SASTORE*/Opcode.SD_M3,
389: /*POP*/Opcode.SD_M1,
390: /*POP2*/Opcode.SD_M2,
391: /*DUP*/Opcode.SD_P1,
392: /* 90*//*DUP_X1*/Opcode.SD_P1,
393: /*DUP_X2*/Opcode.SD_P1,
394: /*DUP2*/Opcode.SD_P2,
395: /*DUP2_X1*/Opcode.SD_P2,
396: /*DUP2_X2*/Opcode.SD_P2,
397: /*SWAP*/Opcode.SD_P0,
398: /*IADD*/Opcode.SD_M1,
399: /*LADD*/Opcode.SD_M2,
400: /*FADD*/Opcode.SD_M1,
401: /*DADD*/Opcode.SD_M2,
402: /*100*//*ISUB*/Opcode.SD_M1,
403: /*LSUB*/Opcode.SD_M2,
404: /*FSUB*/Opcode.SD_M1,
405: /*DSUB*/Opcode.SD_M2,
406: /*IMUL*/Opcode.SD_M1,
407: /*LMUL*/Opcode.SD_M2,
408: /*FMUL*/Opcode.SD_M1,
409: /*DMUL*/Opcode.SD_M2,
410: /*IDIV*/Opcode.SD_M1,
411: /*LDIV*/Opcode.SD_M2,
412: /*110*//*FDIV*/Opcode.SD_M1,
413: /*DDIV*/Opcode.SD_M2,
414: /*IREM*/Opcode.SD_M1,
415: /*LREM*/Opcode.SD_M2,
416: /*FREM*/Opcode.SD_M1,
417: /*DREM*/Opcode.SD_M2,
418: /*INEG*/Opcode.SD_P0,
419: /*LNEG*/Opcode.SD_P0,
420: /*FNEG*/Opcode.SD_P0,
421: /*DNEG*/Opcode.SD_P0,
422: /*120*//*ISHL*/Opcode.SD_M1,
423: /*LSHL*/Opcode.SD_M1,
424: /*ISHR*/Opcode.SD_M1,
425: /*LSHR*/Opcode.SD_M1,
426: /*IUSHR*/Opcode.SD_M1,
427: /*LUSHR*/Opcode.SD_M1,
428: /*IAND*/Opcode.SD_M1,
429: /*LAND*/Opcode.SD_M2,
430: /*IOR*/Opcode.SD_M1,
431: /*LOR*/Opcode.SD_M2,
432: /*130*//*IXOR*/Opcode.SD_M1,
433: /*LXOR*/Opcode.SD_M2,
434: /*IINC*/Opcode.SD_P0 | Opcode.OP1_LV1 | Opcode.OP2_SB,
435: /*I2L*/Opcode.SD_P1,
436: /*I2F*/Opcode.SD_P0,
437: /*I2D*/Opcode.SD_P1,
438: /*L2I*/Opcode.SD_M1,
439: /*L2F*/Opcode.SD_M1,
440: /*L2D*/Opcode.SD_P0,
441: /*F2I*/Opcode.SD_P0,
442: /*140*//*F2L*/Opcode.SD_P1,
443: /*F2D*/Opcode.SD_P1,
444: /*D2I*/Opcode.SD_M1,
445: /*D2L*/Opcode.SD_P0,
446: /*D2F*/Opcode.SD_M1,
447: /*I2B*/Opcode.SD_P0,
448: /*I2C*/Opcode.SD_P0,
449: /*I2S*/Opcode.SD_P0,
450: /*LCMP*/Opcode.SD_M3,
451: /*FCMPL*/Opcode.SD_M1,
452: /*150*//*FCMPG*/Opcode.SD_M1,
453: /*DCMPL*/Opcode.SD_M3,
454: /*DCMPG*/Opcode.SD_M3,
455: /*IFEQ*/Opcode.SD_M1 | Opcode.OP1_BO2,
456: /*IFNE*/Opcode.SD_M1 | Opcode.OP1_BO2,
457: /*IFLT*/Opcode.SD_M1 | Opcode.OP1_BO2,
458: /*IFGE*/Opcode.SD_M1 | Opcode.OP1_BO2,
459: /*IFGT*/Opcode.SD_M1 | Opcode.OP1_BO2,
460: /*IFLE*/Opcode.SD_M1 | Opcode.OP1_BO2,
461: /*IF_ICMPEQ*/Opcode.SD_M2 | Opcode.OP1_BO2,
462: /*160*//*IF_ICMPNE*/Opcode.SD_M2 | Opcode.OP1_BO2,
463: /*IF_ICMPLT*/Opcode.SD_M2 | Opcode.OP1_BO2,
464: /*IF_ICMPGE*/Opcode.SD_M2 | Opcode.OP1_BO2,
465: /*IF_ICMPGT*/Opcode.SD_M2 | Opcode.OP1_BO2,
466: /*IF_ICMPLE*/Opcode.SD_M2 | Opcode.OP1_BO2,
467: /*IF_ACMPEQ*/Opcode.SD_M2 | Opcode.OP1_BO2,
468: /*IF_ACMPNE*/Opcode.SD_M2 | Opcode.OP1_BO2,
469: /*GOTO*/Opcode.SD_P0 | Opcode.OP1_BO2
470: | Opcode.NO_FALLTHROUGH,
471: /*JSR*/Opcode.SD_P0 | Opcode.OP1_JSR,
472: /*RET*/Opcode.SD_P0 | Opcode.OP1_LV1
473: | Opcode.NO_FALLTHROUGH,
474: /*170*//*TABLESWITCH*/Opcode.SD_M1
475: | Opcode.OP1_TABLESWITCH,
476: /*LOOKUPSWITCH*/Opcode.SD_M1 | Opcode.OP1_LOOKUPSWITCH,
477: /*IRETURN*/Opcode.SD_0 | Opcode.NO_FALLTHROUGH,
478: /*LRETURN*/Opcode.SD_0 | Opcode.NO_FALLTHROUGH,
479: /*FRETURN*/Opcode.SD_0 | Opcode.NO_FALLTHROUGH,
480: /*DRETURN*/Opcode.SD_0 | Opcode.NO_FALLTHROUGH,
481: /*ARETURN*/Opcode.SD_M1 | Opcode.NO_FALLTHROUGH,
482: /*RETURN*/Opcode.SD_0 | Opcode.NO_FALLTHROUGH,
483: /*GETSTATIC*/Opcode.SD_GETSTATIC | Opcode.OP1_CP2,
484: /*PUTSTATIC*/Opcode.SD_PUTSTATIC | Opcode.OP1_CP2,
485: /*180*//*GETFIELD*/Opcode.SD_GETFIELD | Opcode.OP1_CP2,
486: /*PUTFIELD*/Opcode.SD_PUTFIELD | Opcode.OP1_CP2,
487: /*INVOKEVIRTUAL*/Opcode.SD_INVOKEVIRTUAL | Opcode.OP1_CP2,
488: /*INVOKESPECIAL*/Opcode.SD_INVOKESPECIAL | Opcode.OP1_CP2,
489: /*INVOKESTATIC*/Opcode.SD_INVOKESTATIC | Opcode.OP1_CP2,
490: /*INVOKEINTERFACE*/Opcode.SD_INVOKEINTERFACE
491: | Opcode.OP1_CP2 | Opcode.OP2_SB | Opcode.OP3_SB,
492: /*UNUSED*/Opcode.INVALID_OPCODE,
493: /*NEW*/Opcode.SD_P1 | Opcode.OP1_CP2,
494: /*NEWARRAY*/Opcode.SD_P0 | Opcode.OP1_UB,
495: /*ANEWARRAY*/Opcode.SD_P0 | Opcode.OP1_CP2,
496: /*190*//*ARRAYLENGTH*/Opcode.SD_P0,
497: /*ATHROW*/Opcode.SD_M1 | Opcode.NO_FALLTHROUGH,
498: /*CHECKCAST*/Opcode.SD_P0 | Opcode.OP1_CP2,
499: /*INSTANCEOF*/Opcode.SD_P0 | Opcode.OP1_CP2,
500: /*MONITORENTER*/Opcode.SD_M1,
501: /*MONITOREXIT*/Opcode.SD_M1,
502: /*WIDE*/Opcode.INVALID_OPCODE,
503: /*MULTIANEWARRAY*/Opcode.SD_MULTIANEWARRAY
504: | Opcode.OP1_CP2 | Opcode.OP2_SB,
505: /*IFNULL*/Opcode.SD_M1 | Opcode.OP1_BO2,
506: /*IFNONNULL*/Opcode.SD_M1 | Opcode.OP1_BO2,
507: /*200*//*GOTO_W*/Opcode.SD_P0 | Opcode.OP1_BO4,
508: /*JSR_W*/Opcode.SD_P1 | Opcode.OP1_BO4,
509: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
510: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
511: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
512: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
513: /*210*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
514: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
515: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
516: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
517: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
518: /*220*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
519: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
520: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
521: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
522: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
523: /*230*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
524: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
525: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
526: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
527: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
528: /*240*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
529: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
530: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
531: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
532: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
533: /*250*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
534: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
535: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE, };
536:
537: public static final short[] WIDE_OPCODE_PROPERTIES = {
538: /* 0*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
539: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
540: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
541: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
542: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
543: /*010*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
544: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
545: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
546: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
547: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
548: /*020*/Opcode.INVALID_OPCODE,
549: /*ILOAD*/Opcode.SD_P1 | Opcode.OP1_LV2,
550: /*LLOAD*/Opcode.SD_P2 | Opcode.OP1_LV2,
551: /*FLOAD*/Opcode.SD_P1 | Opcode.OP1_LV2,
552: /*DLOAD*/Opcode.SD_P2 | Opcode.OP1_LV2,
553: /*ALOAD*/Opcode.SD_P1 | Opcode.OP1_LV2,
554: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
555: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
556: /* 30*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
557: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
558: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
559: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
560: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
561: /* 40*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
562: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
563: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
564: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
565: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
566: /* 50*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
567: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
568: /*ISTORE*/Opcode.SD_M1 | Opcode.OP1_LV2,
569: /*LSTORE*/Opcode.SD_M2 | Opcode.OP1_LV2,
570: /*FSTORE*/Opcode.SD_M1 | Opcode.OP1_LV2,
571: /*DSTORE*/Opcode.SD_M2 | Opcode.OP1_LV2,
572: /*ASTORE*/Opcode.SD_M1 | Opcode.OP1_LV2,
573: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
574: /* 60*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
575: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
576: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
577: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
578: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
579: /* 70*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
580: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
581: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
582: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
583: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
584: /* 80*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
585: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
586: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
587: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
588: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
589: /* 90*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
590: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
591: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
592: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
593: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
594: /*100*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
595: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
596: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
597: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
598: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
599: /*110*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
600: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
601: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
602: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
603: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
604: /*120*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
605: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
606: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
607: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
608: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
609: /*130*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
610: /*IINC*/Opcode.SD_P0 | Opcode.OP1_LV2 | Opcode.OP2_SS,
611: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
612: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
613: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
614: Opcode.INVALID_OPCODE,
615: /*140*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
616: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
617: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
618: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
619: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
620: /*150*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
621: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
622: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
623: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
624: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
625: /*160*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
626: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
627: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
628: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
629: Opcode.INVALID_OPCODE,
630: /*RET*/Opcode.SD_P0 | Opcode.OP1_LV2,
631: /*170*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
632: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
633: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
634: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
635: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
636: /*180*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
637: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
638: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
639: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
640: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
641: /*190*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
642: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
643: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
644: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
645: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
646: /*200*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
647: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
648: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
649: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
650: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
651: /*210*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
652: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
653: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
654: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
655: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
656: /*220*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
657: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
658: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
659: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
660: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
661: /*230*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
662: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
663: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
664: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
665: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
666: /*240*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
667: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
668: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
669: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
670: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
671: /*250*/Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
672: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE,
673: Opcode.INVALID_OPCODE, Opcode.INVALID_OPCODE, };
674: }
|