KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > vladium > jcd > opcodes > IOpcodes


1 /* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
2  *
3  * This program and the accompanying materials are made available under
4  * the terms of the Common Public License v1.0 which accompanies this distribution,
5  * and is available at http://www.eclipse.org/legal/cpl-v10.html
6  *
7  * $Id: IOpcodes.java,v 1.1.1.1.2.1 2004/07/10 03:34:52 vlad_r Exp $
8  */

9 package com.vladium.jcd.opcodes;
10
11 // ----------------------------------------------------------------------------
12
/**
13  * @author Vlad Roubtsov, (C) 2003
14  */

15 public
16 interface IOpcodes
17 {
18     // public: ................................................................
19

20     // opcode hex dec opbytes stackwords wideable
21
int _nop = 0x00; // 00 0 0
22
int _aconst_null = 0x01; // 01 0 +1
23
int _iconst_m1 = 0x02; // 02 0 +1
24
int _iconst_0 = 0x03; // 03 0 +1
25
int _iconst_1 = 0x04; // 04 0 +1
26
int _iconst_2 = 0x05; // 05 0 +1
27
int _iconst_3 = 0x06; // 06 0 +1
28
int _iconst_4 = 0x07; // 07 0 +1
29
int _iconst_5 = 0x08; // 08 0 +1
30
int _lconst_0 = 0x09; // 09 0 +2
31
int _lconst_1 = 0x0A; // 10 0 +2
32
int _fconst_0 = 0x0B; // 11 0 +1
33
int _fconst_1 = 0x0C; // 12 0 +1
34
int _fconst_2 = 0x0D; // 13 0 +1
35
int _dconst_0 = 0x0E; // 14 0 +2
36
int _dconst_1 = 0x0F; // 15 0 +2
37
int _bipush = 0x10; // 16 1 +1
38
int _sipush = 0x11; // 17 2 +1
39
int _ldc = 0x12; // 18 1 +1
40
int _ldc_w = 0x13; // 19 2 +1
41
int _ldc2_w = 0x14; // 20 2 +2
42
int _iload = 0x15; // 21 1 +1 true
43
int _lload = 0x16; // 22 1 +2 true
44
int _fload = 0x17; // 23 1 +1 true
45
int _dload = 0x18; // 24 1 +2 true
46
int _aload = 0x19; // 25 1 +1 true
47
int _iload_0 = 0x1A; // 26 0 +1
48
int _iload_1 = 0x1B; // 27 0 +1
49
int _iload_2 = 0x1C; // 28 0 +1
50
int _iload_3 = 0x1D; // 29 0 +1
51
int _lload_0 = 0x1E; // 30 0 +2
52
int _lload_1 = 0x1F; // 31 0 +2
53
int _lload_2 = 0x20; // 32 0 +2
54
int _lload_3 = 0x21; // 33 0 +2
55
int _fload_0 = 0x22; // 34 0 +1
56
int _fload_1 = 0x23; // 35 0 +1
57
int _fload_2 = 0x24; // 36 0 +1
58
int _fload_3 = 0x25; // 37 0 +1
59
int _dload_0 = 0x26; // 38 0 +2
60
int _dload_1 = 0x27; // 39 0 +2
61
int _dload_2 = 0x28; // 40 0 +2
62
int _dload_3 = 0x29; // 41 0 +2
63
int _aload_0 = 0x2A; // 42 0 +1
64
int _aload_1 = 0x2B; // 43 0 +1
65
int _aload_2 = 0x2C; // 44 0 +1
66
int _aload_3 = 0x2D; // 45 0 +1
67
int _iaload = 0x2E; // 46 0 -1
68
int _laload = 0x2F; // 47 0 0
69
int _faload = 0x30; // 48 0 -1
70
int _daload = 0x31; // 49 0 0
71
int _aaload = 0x32; // 50 0 -1
72
int _baload = 0x33; // 51 0 -1
73
int _caload = 0x34; // 52 0 -1
74
int _saload = 0x35; // 53 0 -1
75
int _istore = 0x36; // 54 1 -1 true
76
int _lstore = 0x37; // 55 1 -2 true
77
int _fstore = 0x38; // 56 1 -1 true
78
int _dstore = 0x39; // 57 1 -2 true
79
int _astore = 0x3A; // 58 1 -1 true
80
int _istore_0 = 0x3B; // 59 0 -1
81
int _istore_1 = 0x3C; // 60 0 -1
82
int _istore_2 = 0x3D; // 61 0 -1
83
int _istore_3 = 0x3E; // 62 0 -1
84
int _lstore_0 = 0x3F; // 63 0 -2
85
int _lstore_1 = 0x40; // 64 0 -2
86
int _lstore_2 = 0x41; // 65 0 -2
87
int _lstore_3 = 0x42; // 66 0 -2
88
int _fstore_0 = 0x43; // 67 0 -1
89
int _fstore_1 = 0x44; // 68 0 -1
90
int _fstore_2 = 0x45; // 69 0 -1
91
int _fstore_3 = 0x46; // 70 0 -1
92
int _dstore_0 = 0x47; // 71 0 -2
93
int _dstore_1 = 0x48; // 72 0 -2
94
int _dstore_2 = 0x49; // 73 0 -2
95
int _dstore_3 = 0x4A; // 74 0 -2
96
int _astore_0 = 0x4B; // 75 0 -1
97
int _astore_1 = 0x4C; // 76 0 -1
98
int _astore_2 = 0x4D; // 77 0 -1
99
int _astore_3 = 0x4E; // 78 0 -1
100
int _iastore = 0x4F; // 79 0 -3
101
int _lastore = 0x50; // 80 0 -4
102
int _fastore = 0x51; // 81 0 -3
103
int _dastore = 0x52; // 82 0 -4
104
int _aastore = 0x53; // 83 0 -3
105
int _bastore = 0x54; // 84 0 -3
106
int _castore = 0x55; // 85 0 -3
107
int _sastore = 0x56; // 86 0 -3
108
int _pop = 0x57; // 87 0 -1
109
int _pop2 = 0x58; // 88 0 -2
110
int _dup = 0x59; // 89 0 +1
111
int _dup_x1 = 0x5A; // 90 0 +1
112
int _dup_x2 = 0x5B; // 91 0 +1
113
int _dup2 = 0x5C; // 92 0 +2
114
int _dup2_x1 = 0x5D; // 93 0 +2
115
int _dup2_x2 = 0x5E; // 94 0 +2
116
int _swap = 0x5F; // 95 0 0
117
int _iadd = 0x60; // 96 0 -1
118
int _ladd = 0x61; // 97 0 -2
119
int _fadd = 0x62; // 98 0 -1
120
int _dadd = 0x63; // 99 0 -2
121
int _isub = 0x64; // 100 0 -1
122
int _lsub = 0x65; // 101 0 -2
123
int _fsub = 0x66; // 102 0 -1
124
int _dsub = 0x67; // 103 0 -2
125
int _imul = 0x68; // 104 0 -1
126
int _lmul = 0x69; // 105 0 -2
127
int _fmul = 0x6A; // 106 0 -1
128
int _dmul = 0x6B; // 107 0 -2
129
int _idiv = 0x6C; // 108 0 -1
130
int _ldiv = 0x6D; // 109 0 -2
131
int _fdiv = 0x6E; // 110 0 -1
132
int _ddiv = 0x6F; // 111 0 -2
133
int _irem = 0x70; // 112 0 -1
134
int _lrem = 0x71; // 113 0 -2
135
int _frem = 0x72; // 114 0 -1
136
int _drem = 0x73; // 115 0 -2
137
int _ineg = 0x74; // 116 0 0
138
int _lneg = 0x75; // 117 0 0
139
int _fneg = 0x76; // 118 0 0
140
int _dneg = 0x77; // 119 0 0
141
int _ishl = 0x78; // 120 0 -1
142
int _lshl = 0x79; // 121 0 -1
143
int _ishr = 0x7A; // 122 0 -1
144
int _lshr = 0x7B; // 123 0 -1
145
int _iushr = 0x7C; // 124 0 -1
146
int _lushr = 0x7D; // 125 0 -2
147
int _iand = 0x7E; // 126 0 -1
148
int _land = 0x7F; // 127 0 -2
149
int _ior = 0x80; // 128 0 -1
150
int _lor = 0x81; // 129 0 -2
151
int _ixor = 0x82; // 130 0 -1
152
int _lxor = 0x83; // 131 0 -2
153
int _iinc = 0x84; // 132 2 0 true [widening is tricky here]
154
int _i2l = 0x85; // 133 0 +1
155
int _i2f = 0x86; // 134 0 0
156
int _i2d = 0x87; // 135 0 +1
157
int _l2i = 0x88; // 136 0 -1
158
int _l2f = 0x89; // 137 0 -1
159
int _l2d = 0x8A; // 138 0 0
160
int _f2i = 0x8B; // 139 0 0
161
int _f2l = 0x8C; // 140 0 +1
162
int _f2d = 0x8D; // 141 0 +1
163
int _d2i = 0x8E; // 142 0 -1
164
int _d2l = 0x8F; // 143 0 0
165
int _d2f = 0x90; // 144 0 -1
166
int _i2b = 0x91; // 145 0 0
167
int _i2c = 0x92; // 146 0 0
168
int _i2s = 0x93; // 147 0 0
169
int _lcmp = 0x94; // 148 0 -3
170
int _fcmpl = 0x95; // 149 0 -1
171
int _fcmpg = 0x96; // 150 0 -1
172
int _dcmpl = 0x97; // 151 0 -3
173
int _dcmpg = 0x98; // 152 0 -3
174
int _ifeq = 0x99; // 153 2 -1
175
int _ifne = 0x9A; // 154 2 -1
176
int _iflt = 0x9B; // 155 2 -1
177
int _ifge = 0x9C; // 156 2 -1
178
int _ifgt = 0x9D; // 157 2 -1
179
int _ifle = 0x9E; // 158 2 -1
180
int _if_icmpeq = 0x9F; // 159 2 -2
181
int _if_icmpne = 0xA0; // 160 2 -2
182
int _if_icmplt = 0xA1; // 161 2 -2
183
int _if_icmpge = 0xA2; // 162 2 -2
184
int _if_icmpgt = 0xA3; // 163 2 -2
185
int _if_icmple = 0xA4; // 164 2 -2
186
int _if_acmpeq = 0xA5; // 165 2 -2
187
int _if_acmpne = 0xA6; // 166 2 -2
188
int _goto = 0xA7; // 167 2 0
189
int _jsr = 0xA8; // 168 2 +1
190
int _ret = 0xA9; // 169 1 0 true
191
int _tableswitch = 0xAA; // 170 * -1 [there are padding bytes and variable number of operands]
192
int _lookupswitch = 0xAB; // 171 * -1 [there are padding bytes and variable number of operands]
193
int _ireturn = 0xAC; // 172 0 -1* [current method returns]
194
int _lreturn = 0xAD; // 173 0 -2* [current method returns]
195
int _freturn = 0xAE; // 174 0 -1* [current method returns]
196
int _dreturn = 0xAF; // 175 0 -2* [current method returns]
197
int _areturn = 0xB0; // 176 0 -1* [current method returns]
198
int _return = 0xB1; // 177 0 0* [current method returns]
199
int _getstatic = 0xB2; // 178 2 +1 or +2* [after stack depends on the field type]
200
int _putstatic = 0xB3; // 179 2 -1 or -2* [after stack depends on the field type]
201
int _getfield = 0xB4; // 180 2 0 or +1* [after stack depends on the field type]
202
int _putfield = 0xB5; // 181 2 -2 or -3* [after stack depends on the field type]
203
int _invokevirtual = 0xB6; // 182 2 * * [stack words pushed for the call are emptied]
204
int _invokespecial = 0xB7; // 183 2 * * [stack words pushed for the call are emptied]
205
int _invokestatic = 0xB8; // 184 2 * * [stack words pushed for the call are emptied]
206
int _invokeinterface = 0xB9; // 185 4 * * [last operand is 0; stack words pushed for the call are emptied]
207
int _unused = 0xBA; // 186 * * * [for historical reasons, opcode value 186 is not used]
208
int _new = 0xBB; // 187 2 +1
209
int _newarray = 0xBC; // 188 1 0
210
int _anewarray = 0xBD; // 189 2 0
211
int _arraylength = 0xBE; // 190 0 0
212
int _athrow = 0xBF; // 191 0 0* * [stack frame is emptied except for 1 obj ref]
213
int _checkcast = 0xC0; // 192 2 0
214
int _instanceof = 0xC1; // 193 2 0
215
int _monitorenter = 0xC2; // 194 0 -1
216
int _monitorexit = 0xC3; // 195 0 -1
217
int _wide = 0xC4; // 196 * * [depends on instruction being modified]
218
int _multianewarray = 0xC5; // 197 3 * [variable number of stack operands]
219
int _ifnull = 0xC6; // 198 2 -1
220
int _ifnonnull = 0xC7; // 199 2 -1
221
int _goto_w = 0xC8; // 200 4 0
222
int _jsr_w = 0xC9; // 201 4 +1
223
// reserved opcodes:
224
int _breakpoint = 0xCA; // 202
225
int _impdep1 = 0xFE; // 254
226
int _impdep2 = 0xFF; // 255
227

228     
229     String JavaDoc [] MNEMONICS =
230     {
231         "nop", // 0x00 00
232
"aconst_null", // 0x01 01
233
"iconst_m1", // 0x02 02
234
"iconst_0", // 0x03 03
235
"iconst_1", // 0x04 04
236
"iconst_2", // 0x05 05
237
"iconst_3", // 0x06 06
238
"iconst_4", // 0x07 07
239
"iconst_5", // 0x08 08
240
"lconst_0", // 0x09 09
241
"lconst_1", // 0x0A 10
242
"fconst_0", // 0x0B 11
243
"fconst_1", // 0x0C 12
244
"fconst_2", // 0x0D 13
245
"dconst_0", // 0x0E 14
246
"dconst_1", // 0x0F 15
247
"bipush", // 0x10 16
248
"sipush", // 0x11 17
249
"ldc", // 0x12 18
250
"ldc_w", // 0x13 19
251
"ldc2_w", // 0x14 20
252
"iload", // 0x15 21
253
"lload", // 0x16 22
254
"fload", // 0x17 23
255
"dload", // 0x18 24
256
"aload", // 0x19 25
257
"iload_0", // 0x1A 26
258
"iload_1", // 0x1B 27
259
"iload_2", // 0x1C 28
260
"iload_3", // 0x1D 29
261
"lload_0", // 0x1E 30
262
"lload_1", // 0x1F 31
263
"lload_2", // 0x20 32
264
"lload_3", // 0x21 33
265
"fload_0", // 0x22 34
266
"fload_1", // 0x23 35
267
"fload_2", // 0x24 36
268
"fload_3", // 0x25 37
269
"dload_0", // 0x26 38
270
"dload_1", // 0x27 39
271
"dload_2", // 0x28 40
272
"dload_3", // 0x29 41
273
"aload_0", // 0x2A 42
274
"aload_1", // 0x2B 43
275
"aload_2", // 0x2C 44
276
"aload_3", // 0x2D 45
277
"iaload", // 0x2E 46
278
"laload", // 0x2F 47
279
"faload", // 0x30 48
280
"daload", // 0x31 49
281
"aaload", // 0x32 50
282
"baload", // 0x33 51
283
"caload", // 0x34 52
284
"saload", // 0x35 53
285
"istore", // 0x36 54
286
"lstore", // 0x37 55
287
"fstore", // 0x38 56
288
"dstore", // 0x39 57
289
"astore", // 0x3A 58
290
"istore_0", // 0x3B 59
291
"istore_1", // 0x3C 60
292
"istore_2", // 0x3D 61
293
"istore_3", // 0x3E 62
294
"lstore_0", // 0x3F 63
295
"lstore_1", // 0x40 64
296
"lstore_2", // 0x41 65
297
"lstore_3", // 0x42 66
298
"fstore_0", // 0x43 67
299
"fstore_1", // 0x44 68
300
"fstore_2", // 0x45 69
301
"fstore_3", // 0x46 70
302
"dstore_0", // 0x47 71
303
"dstore_1", // 0x48 72
304
"dstore_2", // 0x49 73
305
"dstore_3", // 0x4A 74
306
"astore_0", // 0x4B 75
307
"astore_1", // 0x4C 76
308
"astore_2", // 0x4D 77
309
"astore_3", // 0x4E 78
310
"iastore", // 0x4F 79
311
"lastore", // 0x50 80
312
"fastore", // 0x51 81
313
"dastore", // 0x52 82
314
"aastore", // 0x53 83
315
"bastore", // 0x54 84
316
"castore", // 0x55 85
317
"sastore", // 0x56 86
318
"pop", // 0x57 87
319
"pop2", // 0x58 88
320
"dup", // 0x59 089
321
"dup_x1", // 0x5A 090
322
"dup_x2", // 0x5B 091
323
"dup2", // 0x5C 092
324
"dup2_x1", // 0x5D 093
325
"dup2_x2", // 0x5E 094
326
"swap", // 0x5F 095
327
"iadd", // 0x60 096
328
"ladd", // 0x61 097
329
"fadd", // 0x62 098
330
"dadd", // 0x63 099
331
"isub", // 0x64 100
332
"lsub", // 0x65 101
333
"fsub", // 0x66 102
334
"dsub", // 0x67 103
335
"imul", // 0x68 104
336
"lmul", // 0x69 105
337
"fmul", // 0x6A 106
338
"dmul", // 0x6B 107
339
"idiv", // 0x6C 108
340
"ldiv", // 0x6D 109
341
"fdiv", // 0x6E 110
342
"ddiv", // 0x6F 111
343
"irem", // 0x70 112
344
"lrem", // 0x71 113
345
"frem", // 0x72 114
346
"drem", // 0x73 115
347
"ineg", // 0x74 116
348
"lneg", // 0x75 117
349
"fneg", // 0x76 118
350
"dneg", // 0x77 119
351
"ishl", // 0x78 120
352
"lshl", // 0x79 121
353
"ishr", // 0x7A 122
354
"lshr", // 0x7B 123
355
"iushr", // 0x7C 124
356
"lushr", // 0x7D 125
357
"iand", // 0x7E 126
358
"land", // 0x7F 127
359
"ior", // 0x80 128
360
"lor", // 0x81 129
361
"ixor", // 0x82 130
362
"lxor", // 0x83 131
363
"iinc", // 0x84 132
364
"i2l", // 0x85 133
365
"i2f", // 0x86 134
366
"i2d", // 0x87 135
367
"l2i", // 0x88 136
368
"l2f", // 0x89 137
369
"l2d", // 0x8A 138
370
"f2i", // 0x8B 139
371
"f2l", // 0x8C 140
372
"f2d", // 0x8D 141
373
"d2i", // 0x8E 142
374
"d2l", // 0x8F 143
375
"d2f", // 0x90 144
376
"i2b", // 0x91 145
377
"i2c", // 0x92 146
378
"i2s", // 0x93 147
379
"lcmp", // 0x94 148
380
"fcmpl", // 0x95 149
381
"fcmpg", // 0x96 150
382
"dcmpl", // 0x97 151
383
"dcmpg", // 0x98 152
384
"ifeq", // 0x99 153
385
"ifne", // 0x9A 154
386
"iflt", // 0x9B 155
387
"ifge", // 0x9C 156
388
"ifgt", // 0x9D 157
389
"ifle", // 0x9E 158
390
"if_icmpeq", // 0x9F 159
391
"if_icmpne", // 0xA0 160
392
"if_icmplt", // 0xA1 161
393
"if_icmpge", // 0xA2 162
394
"if_icmpgt", // 0xA3 163
395
"if_icmple", // 0xA4 164
396
"if_acmpeq", // 0xA5 165
397
"if_acmpne", // 0xA6 166
398
"goto", // 0xA7 167
399
"jsr", // 0xA8 168
400
"ret", // 0xA9 169
401
"tableswitch", // 0xAA 170
402
"lookupswitch", // 0xAB 171
403
"ireturn", // 0xAC 172
404
"lreturn", // 0xAD 173
405
"freturn", // 0xAE 174
406
"dreturn", // 0xAF 175
407
"areturn", // 0xB0 176
408
"return", // 0xB1 177
409
"getstatic", // 0xB2 178
410
"putstatic", // 0xB3 179
411
"getfield", // 0xB4 180
412
"putfield", // 0xB5 181
413
"invokevirtual", // 0xB6 182
414
"invokespecial", // 0xB7 183
415
"invokestatic", // 0xB8 184
416
"invokeinterface", // 0xB9 185
417
"unused", // 0xBA 186
418
"new", // 0xBB 187
419
"newarray", // 0xBC 188
420
"anewarray", // 0xBD 189
421
"arraylength", // 0xBE 190
422
"athrow", // 0xBF 191
423
"checkcast", // 0xC0 192
424
"instanceof", // 0xC1 193
425
"monitorenter", // 0xC2 194
426
"monitorexit", // 0xC3 195
427
"[wide]", // 0xC4 196
428
"multianewarray", // 0xC5 197
429
"ifnull", // 0xC6 198
430
"ifnonnull", // 0xC7 199
431
"goto_w", // 0xC8 200
432
"jsr_w" // 0xC9 201
433
};
434     
435     
436     boolean [] CONDITIONAL_BRANCHES = clinit._CONDITIONAL_BRANCHES;
437     boolean [] COMPOUND_CONDITIONAL_BRANCHES = clinit._COMPOUND_CONDITIONAL_BRANCHES;
438     boolean [] UNCONDITIONAL_BRANCHES = clinit._UNCONDITIONAL_BRANCHES;
439     boolean [] BRANCHES = clinit._BRANCHES;
440     
441     int [] NARROW_SIZE = clinit._NARROW_SIZE; // including the opcode itself
442
int [] WIDE_SIZE = clinit._WIDE_SIZE; // including the opcode itself
443

444     
445     static final class clinit
446     {
447         static final boolean [] _CONDITIONAL_BRANCHES;
448         static final boolean [] _COMPOUND_CONDITIONAL_BRANCHES;
449         static final boolean [] _UNCONDITIONAL_BRANCHES;
450         static final boolean [] _BRANCHES;
451         static final int [] _NARROW_SIZE;
452         static final int [] _WIDE_SIZE;
453         
454         static
455         {
456             final int opcodeCount = MNEMONICS.length;
457             
458             _CONDITIONAL_BRANCHES = new boolean [opcodeCount];
459             
460             _CONDITIONAL_BRANCHES [_ifeq] = true;
461             _CONDITIONAL_BRANCHES [_iflt] = true;
462             _CONDITIONAL_BRANCHES [_ifle] = true;
463             _CONDITIONAL_BRANCHES [_ifne] = true;
464             _CONDITIONAL_BRANCHES [_ifgt] = true;
465             _CONDITIONAL_BRANCHES [_ifge] = true;
466             _CONDITIONAL_BRANCHES [_ifnull] = true;
467             _CONDITIONAL_BRANCHES [_ifnonnull] = true;
468             _CONDITIONAL_BRANCHES [_if_icmpeq] = true;
469             _CONDITIONAL_BRANCHES [_if_icmpne] = true;
470             _CONDITIONAL_BRANCHES [_if_icmplt] = true;
471             _CONDITIONAL_BRANCHES [_if_icmpgt] = true;
472             _CONDITIONAL_BRANCHES [_if_icmple] = true;
473             _CONDITIONAL_BRANCHES [_if_icmpge] = true;
474             _CONDITIONAL_BRANCHES [_if_acmpeq] = true;
475             _CONDITIONAL_BRANCHES [_if_acmpne] = true;
476
477
478             _COMPOUND_CONDITIONAL_BRANCHES = new boolean [opcodeCount];
479             
480             _COMPOUND_CONDITIONAL_BRANCHES [_tableswitch] = true;
481             _COMPOUND_CONDITIONAL_BRANCHES [_lookupswitch] = true;
482
483             
484             _UNCONDITIONAL_BRANCHES = new boolean [opcodeCount];
485             
486             _UNCONDITIONAL_BRANCHES [_goto] = true;
487             _UNCONDITIONAL_BRANCHES [_goto_w] = true;
488             _UNCONDITIONAL_BRANCHES [_jsr] = true;
489             _UNCONDITIONAL_BRANCHES [_jsr_w] = true;
490             _UNCONDITIONAL_BRANCHES [_ret] = true;
491
492             _UNCONDITIONAL_BRANCHES [_ireturn] = true;
493             _UNCONDITIONAL_BRANCHES [_lreturn] = true;
494             _UNCONDITIONAL_BRANCHES [_freturn] = true;
495             _UNCONDITIONAL_BRANCHES [_dreturn] = true;
496             _UNCONDITIONAL_BRANCHES [_areturn] = true;
497             _UNCONDITIONAL_BRANCHES [_return] = true;
498
499             _UNCONDITIONAL_BRANCHES [_athrow] = true;
500
501
502             _BRANCHES = new boolean [opcodeCount];
503             
504             for (int o = 0; o < opcodeCount; ++ o)
505                 if (_CONDITIONAL_BRANCHES [o]) _BRANCHES [o] = true;
506
507             for (int o = 0; o < opcodeCount; ++ o)
508                 if (_COMPOUND_CONDITIONAL_BRANCHES [o]) _BRANCHES [o] = true;
509
510             for (int o = 0; o < opcodeCount; ++ o)
511                 if (_UNCONDITIONAL_BRANCHES [o]) _BRANCHES [o] = true;
512
513
514             _NARROW_SIZE = new int [opcodeCount];
515             
516             for (int o = 0; o < opcodeCount; ++ o) _NARROW_SIZE [o] = 1;
517             
518             _NARROW_SIZE [_bipush] = 2;
519             _NARROW_SIZE [_sipush] = 3;
520
521             _NARROW_SIZE [_ldc] = 2;
522             _NARROW_SIZE [_ldc_w] = 3;
523             _NARROW_SIZE [_ldc2_w] = 3;
524
525             _NARROW_SIZE [_iload] = 2;
526             _NARROW_SIZE [_lload] = 2;
527             _NARROW_SIZE [_fload] = 2;
528             _NARROW_SIZE [_dload] = 2;
529             _NARROW_SIZE [_aload] = 2;
530             _NARROW_SIZE [_istore] = 2;
531             _NARROW_SIZE [_lstore] = 2;
532             _NARROW_SIZE [_fstore] = 2;
533             _NARROW_SIZE [_dstore] = 2;
534             _NARROW_SIZE [_astore] = 2;
535
536             _NARROW_SIZE [_iinc] = 3;
537
538             _NARROW_SIZE [_ifeq] = 3;
539             _NARROW_SIZE [_ifne] = 3;
540             _NARROW_SIZE [_iflt] = 3;
541             _NARROW_SIZE [_ifge] = 3;
542             _NARROW_SIZE [_ifgt] = 3;
543             _NARROW_SIZE [_ifle] = 3;
544             _NARROW_SIZE [_if_icmpeq] = 3;
545             _NARROW_SIZE [_if_icmpne] = 3;
546             _NARROW_SIZE [_if_icmplt] = 3;
547             _NARROW_SIZE [_if_icmpge] = 3;
548             _NARROW_SIZE [_if_icmpgt] = 3;
549             _NARROW_SIZE [_if_icmple] = 3;
550             _NARROW_SIZE [_if_acmpeq] = 3;
551             _NARROW_SIZE [_if_acmpne] = 3;
552             _NARROW_SIZE [_goto] = 3;
553             _NARROW_SIZE [_jsr] = 3;
554             _NARROW_SIZE [_ifnull] = 3;
555             _NARROW_SIZE [_ifnonnull] = 3;
556
557             _NARROW_SIZE [_ret] = 2;
558
559             _NARROW_SIZE [_lookupswitch] = -1; // special case #2
560
_NARROW_SIZE [_tableswitch] = 0; // special case #1
561

562             _NARROW_SIZE [_getstatic] = 3;
563             _NARROW_SIZE [_putstatic] = 3;
564             _NARROW_SIZE [_getfield] = 3;
565             _NARROW_SIZE [_putfield] = 3;
566
567             _NARROW_SIZE [_invokevirtual] = 3;
568             _NARROW_SIZE [_invokespecial] = 3;
569             _NARROW_SIZE [_invokestatic] = 3;
570
571             _NARROW_SIZE [_invokeinterface] = 5;
572                 
573             _NARROW_SIZE [_new] = 3;
574             _NARROW_SIZE [_checkcast] = 3;
575             _NARROW_SIZE [_instanceof] = 3;
576
577             _NARROW_SIZE [_newarray] = 2;
578             _NARROW_SIZE [_anewarray] = 3;
579             _NARROW_SIZE [_multianewarray] = 4;
580
581             _NARROW_SIZE [_goto_w] = 5;
582             _NARROW_SIZE [_jsr_w] = 5;
583             
584             
585             _WIDE_SIZE = (int []) _NARROW_SIZE.clone ();
586             
587             _WIDE_SIZE [_iload] = 3;
588             _WIDE_SIZE [_lload] = 3;
589             _WIDE_SIZE [_fload] = 3;
590             _WIDE_SIZE [_dload] = 3;
591             _WIDE_SIZE [_aload] = 3;
592             _WIDE_SIZE [_istore] = 3;
593             _WIDE_SIZE [_lstore] = 3;
594             _WIDE_SIZE [_fstore] = 3;
595             _WIDE_SIZE [_dstore] = 3;
596             _WIDE_SIZE [_astore] = 3;
597             
598             _WIDE_SIZE [_iinc] = 5;
599             
600             _WIDE_SIZE [_ret] = 3;
601         }
602         
603     } // end of nested class
604

605 } // end of interface
606
// ----------------------------------------------------------------------------
607

608
Popular Tags