Dops.java revision de73f8ed3def229f8a5fc065c8955ec87d28e1e7
1/*
2 * Copyright (C) 2007 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.dx.dex.code;
18
19import com.android.dx.dex.code.form.Form10t;
20import com.android.dx.dex.code.form.Form10x;
21import com.android.dx.dex.code.form.Form11n;
22import com.android.dx.dex.code.form.Form11x;
23import com.android.dx.dex.code.form.Form12x;
24import com.android.dx.dex.code.form.Form20t;
25import com.android.dx.dex.code.form.Form21c;
26import com.android.dx.dex.code.form.Form21h;
27import com.android.dx.dex.code.form.Form21s;
28import com.android.dx.dex.code.form.Form21t;
29import com.android.dx.dex.code.form.Form22b;
30import com.android.dx.dex.code.form.Form22c;
31import com.android.dx.dex.code.form.Form22s;
32import com.android.dx.dex.code.form.Form22t;
33import com.android.dx.dex.code.form.Form22x;
34import com.android.dx.dex.code.form.Form23x;
35import com.android.dx.dex.code.form.Form30t;
36import com.android.dx.dex.code.form.Form31c;
37import com.android.dx.dex.code.form.Form31i;
38import com.android.dx.dex.code.form.Form31t;
39import com.android.dx.dex.code.form.Form32x;
40import com.android.dx.dex.code.form.Form35c;
41import com.android.dx.dex.code.form.Form3rc;
42import com.android.dx.dex.code.form.Form41c;
43import com.android.dx.dex.code.form.Form51l;
44import com.android.dx.dex.code.form.Form52c;
45import com.android.dx.dex.code.form.Form5rc;
46import com.android.dx.dex.code.form.SpecialFormat;
47
48/**
49 * Standard instances of {@link Dop} and utility methods for getting
50 * them.
51 */
52public final class Dops {
53    /** {@code non-null;} array containing all the standard instances */
54    private static final Dop[] DOPS;
55
56    /**
57     * pseudo-opcode used for nonstandard formatted "instructions"
58     * (which are mostly not actually instructions, though they do
59     * appear in instruction lists)
60     */
61    public static final Dop SPECIAL_FORMAT =
62        new Dop(DalvOps.SPECIAL_FORMAT, DalvOps.SPECIAL_FORMAT,
63                DalvOps.NO_NEXT, SpecialFormat.THE_ONE, false, "<special>");
64
65    // BEGIN(dops); GENERATED AUTOMATICALLY BY opcode-gen
66    public static final Dop NOP =
67        new Dop(DalvOps.NOP, DalvOps.NOP,
68            DalvOps.NO_NEXT, Form10x.THE_ONE, false,
69            "nop");
70
71    public static final Dop MOVE =
72        new Dop(DalvOps.MOVE, DalvOps.MOVE,
73            DalvOps.MOVE_FROM16, Form12x.THE_ONE, true,
74            "move");
75
76    public static final Dop MOVE_FROM16 =
77        new Dop(DalvOps.MOVE_FROM16, DalvOps.MOVE,
78            DalvOps.MOVE_16, Form22x.THE_ONE, true,
79            "move/from16");
80
81    public static final Dop MOVE_16 =
82        new Dop(DalvOps.MOVE_16, DalvOps.MOVE,
83            DalvOps.NO_NEXT, Form32x.THE_ONE, true,
84            "move/16");
85
86    public static final Dop MOVE_WIDE =
87        new Dop(DalvOps.MOVE_WIDE, DalvOps.MOVE_WIDE,
88            DalvOps.MOVE_WIDE_FROM16, Form12x.THE_ONE, true,
89            "move-wide");
90
91    public static final Dop MOVE_WIDE_FROM16 =
92        new Dop(DalvOps.MOVE_WIDE_FROM16, DalvOps.MOVE_WIDE,
93            DalvOps.MOVE_WIDE_16, Form22x.THE_ONE, true,
94            "move-wide/from16");
95
96    public static final Dop MOVE_WIDE_16 =
97        new Dop(DalvOps.MOVE_WIDE_16, DalvOps.MOVE_WIDE,
98            DalvOps.NO_NEXT, Form32x.THE_ONE, true,
99            "move-wide/16");
100
101    public static final Dop MOVE_OBJECT =
102        new Dop(DalvOps.MOVE_OBJECT, DalvOps.MOVE_OBJECT,
103            DalvOps.MOVE_OBJECT_FROM16, Form12x.THE_ONE, true,
104            "move-object");
105
106    public static final Dop MOVE_OBJECT_FROM16 =
107        new Dop(DalvOps.MOVE_OBJECT_FROM16, DalvOps.MOVE_OBJECT,
108            DalvOps.MOVE_OBJECT_16, Form22x.THE_ONE, true,
109            "move-object/from16");
110
111    public static final Dop MOVE_OBJECT_16 =
112        new Dop(DalvOps.MOVE_OBJECT_16, DalvOps.MOVE_OBJECT,
113            DalvOps.NO_NEXT, Form32x.THE_ONE, true,
114            "move-object/16");
115
116    public static final Dop MOVE_RESULT =
117        new Dop(DalvOps.MOVE_RESULT, DalvOps.MOVE_RESULT,
118            DalvOps.NO_NEXT, Form11x.THE_ONE, true,
119            "move-result");
120
121    public static final Dop MOVE_RESULT_WIDE =
122        new Dop(DalvOps.MOVE_RESULT_WIDE, DalvOps.MOVE_RESULT_WIDE,
123            DalvOps.NO_NEXT, Form11x.THE_ONE, true,
124            "move-result-wide");
125
126    public static final Dop MOVE_RESULT_OBJECT =
127        new Dop(DalvOps.MOVE_RESULT_OBJECT, DalvOps.MOVE_RESULT_OBJECT,
128            DalvOps.NO_NEXT, Form11x.THE_ONE, true,
129            "move-result-object");
130
131    public static final Dop MOVE_EXCEPTION =
132        new Dop(DalvOps.MOVE_EXCEPTION, DalvOps.MOVE_EXCEPTION,
133            DalvOps.NO_NEXT, Form11x.THE_ONE, true,
134            "move-exception");
135
136    public static final Dop RETURN_VOID =
137        new Dop(DalvOps.RETURN_VOID, DalvOps.RETURN_VOID,
138            DalvOps.NO_NEXT, Form10x.THE_ONE, false,
139            "return-void");
140
141    public static final Dop RETURN =
142        new Dop(DalvOps.RETURN, DalvOps.RETURN,
143            DalvOps.NO_NEXT, Form11x.THE_ONE, false,
144            "return");
145
146    public static final Dop RETURN_WIDE =
147        new Dop(DalvOps.RETURN_WIDE, DalvOps.RETURN_WIDE,
148            DalvOps.NO_NEXT, Form11x.THE_ONE, false,
149            "return-wide");
150
151    public static final Dop RETURN_OBJECT =
152        new Dop(DalvOps.RETURN_OBJECT, DalvOps.RETURN_OBJECT,
153            DalvOps.NO_NEXT, Form11x.THE_ONE, false,
154            "return-object");
155
156    public static final Dop CONST_4 =
157        new Dop(DalvOps.CONST_4, DalvOps.CONST,
158            DalvOps.CONST_16, Form11n.THE_ONE, true,
159            "const/4");
160
161    public static final Dop CONST_16 =
162        new Dop(DalvOps.CONST_16, DalvOps.CONST,
163            DalvOps.CONST_HIGH16, Form21s.THE_ONE, true,
164            "const/16");
165
166    public static final Dop CONST =
167        new Dop(DalvOps.CONST, DalvOps.CONST,
168            DalvOps.NO_NEXT, Form31i.THE_ONE, true,
169            "const");
170
171    public static final Dop CONST_HIGH16 =
172        new Dop(DalvOps.CONST_HIGH16, DalvOps.CONST,
173            DalvOps.CONST, Form21h.THE_ONE, true,
174            "const/high16");
175
176    public static final Dop CONST_WIDE_16 =
177        new Dop(DalvOps.CONST_WIDE_16, DalvOps.CONST_WIDE,
178            DalvOps.CONST_WIDE_HIGH16, Form21s.THE_ONE, true,
179            "const-wide/16");
180
181    public static final Dop CONST_WIDE_32 =
182        new Dop(DalvOps.CONST_WIDE_32, DalvOps.CONST_WIDE,
183            DalvOps.CONST_WIDE, Form31i.THE_ONE, true,
184            "const-wide/32");
185
186    public static final Dop CONST_WIDE =
187        new Dop(DalvOps.CONST_WIDE, DalvOps.CONST_WIDE,
188            DalvOps.NO_NEXT, Form51l.THE_ONE, true,
189            "const-wide");
190
191    public static final Dop CONST_WIDE_HIGH16 =
192        new Dop(DalvOps.CONST_WIDE_HIGH16, DalvOps.CONST_WIDE,
193            DalvOps.CONST_WIDE_32, Form21h.THE_ONE, true,
194            "const-wide/high16");
195
196    public static final Dop CONST_STRING =
197        new Dop(DalvOps.CONST_STRING, DalvOps.CONST_STRING,
198            DalvOps.CONST_STRING_JUMBO, Form21c.THE_ONE, true,
199            "const-string");
200
201    public static final Dop CONST_STRING_JUMBO =
202        new Dop(DalvOps.CONST_STRING_JUMBO, DalvOps.CONST_STRING,
203            DalvOps.NO_NEXT, Form31c.THE_ONE, true,
204            "const-string/jumbo");
205
206    public static final Dop CONST_CLASS =
207        new Dop(DalvOps.CONST_CLASS, DalvOps.CONST_CLASS,
208            DalvOps.CONST_CLASS_JUMBO, Form21c.THE_ONE, true,
209            "const-class");
210
211    public static final Dop MONITOR_ENTER =
212        new Dop(DalvOps.MONITOR_ENTER, DalvOps.MONITOR_ENTER,
213            DalvOps.NO_NEXT, Form11x.THE_ONE, false,
214            "monitor-enter");
215
216    public static final Dop MONITOR_EXIT =
217        new Dop(DalvOps.MONITOR_EXIT, DalvOps.MONITOR_EXIT,
218            DalvOps.NO_NEXT, Form11x.THE_ONE, false,
219            "monitor-exit");
220
221    public static final Dop CHECK_CAST =
222        new Dop(DalvOps.CHECK_CAST, DalvOps.CHECK_CAST,
223            DalvOps.CHECK_CAST_JUMBO, Form21c.THE_ONE, true,
224            "check-cast");
225
226    public static final Dop INSTANCE_OF =
227        new Dop(DalvOps.INSTANCE_OF, DalvOps.INSTANCE_OF,
228            DalvOps.INSTANCE_OF_JUMBO, Form22c.THE_ONE, true,
229            "instance-of");
230
231    public static final Dop ARRAY_LENGTH =
232        new Dop(DalvOps.ARRAY_LENGTH, DalvOps.ARRAY_LENGTH,
233            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
234            "array-length");
235
236    public static final Dop NEW_INSTANCE =
237        new Dop(DalvOps.NEW_INSTANCE, DalvOps.NEW_INSTANCE,
238            DalvOps.NEW_INSTANCE_JUMBO, Form21c.THE_ONE, true,
239            "new-instance");
240
241    public static final Dop NEW_ARRAY =
242        new Dop(DalvOps.NEW_ARRAY, DalvOps.NEW_ARRAY,
243            DalvOps.NEW_ARRAY_JUMBO, Form22c.THE_ONE, true,
244            "new-array");
245
246    public static final Dop FILLED_NEW_ARRAY =
247        new Dop(DalvOps.FILLED_NEW_ARRAY, DalvOps.FILLED_NEW_ARRAY,
248            DalvOps.FILLED_NEW_ARRAY_RANGE, Form35c.THE_ONE, false,
249            "filled-new-array");
250
251    public static final Dop FILLED_NEW_ARRAY_RANGE =
252        new Dop(DalvOps.FILLED_NEW_ARRAY_RANGE, DalvOps.FILLED_NEW_ARRAY,
253            DalvOps.FILLED_NEW_ARRAY_JUMBO, Form3rc.THE_ONE, false,
254            "filled-new-array/range");
255
256    public static final Dop FILL_ARRAY_DATA =
257        new Dop(DalvOps.FILL_ARRAY_DATA, DalvOps.FILL_ARRAY_DATA,
258            DalvOps.NO_NEXT, Form31t.THE_ONE, false,
259            "fill-array-data");
260
261    public static final Dop THROW =
262        new Dop(DalvOps.THROW, DalvOps.THROW,
263            DalvOps.NO_NEXT, Form11x.THE_ONE, false,
264            "throw");
265
266    public static final Dop GOTO =
267        new Dop(DalvOps.GOTO, DalvOps.GOTO,
268            DalvOps.GOTO_16, Form10t.THE_ONE, false,
269            "goto");
270
271    public static final Dop GOTO_16 =
272        new Dop(DalvOps.GOTO_16, DalvOps.GOTO,
273            DalvOps.GOTO_32, Form20t.THE_ONE, false,
274            "goto/16");
275
276    public static final Dop GOTO_32 =
277        new Dop(DalvOps.GOTO_32, DalvOps.GOTO,
278            DalvOps.NO_NEXT, Form30t.THE_ONE, false,
279            "goto/32");
280
281    public static final Dop PACKED_SWITCH =
282        new Dop(DalvOps.PACKED_SWITCH, DalvOps.PACKED_SWITCH,
283            DalvOps.NO_NEXT, Form31t.THE_ONE, false,
284            "packed-switch");
285
286    public static final Dop SPARSE_SWITCH =
287        new Dop(DalvOps.SPARSE_SWITCH, DalvOps.SPARSE_SWITCH,
288            DalvOps.NO_NEXT, Form31t.THE_ONE, false,
289            "sparse-switch");
290
291    public static final Dop CMPL_FLOAT =
292        new Dop(DalvOps.CMPL_FLOAT, DalvOps.CMPL_FLOAT,
293            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
294            "cmpl-float");
295
296    public static final Dop CMPG_FLOAT =
297        new Dop(DalvOps.CMPG_FLOAT, DalvOps.CMPG_FLOAT,
298            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
299            "cmpg-float");
300
301    public static final Dop CMPL_DOUBLE =
302        new Dop(DalvOps.CMPL_DOUBLE, DalvOps.CMPL_DOUBLE,
303            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
304            "cmpl-double");
305
306    public static final Dop CMPG_DOUBLE =
307        new Dop(DalvOps.CMPG_DOUBLE, DalvOps.CMPG_DOUBLE,
308            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
309            "cmpg-double");
310
311    public static final Dop CMP_LONG =
312        new Dop(DalvOps.CMP_LONG, DalvOps.CMP_LONG,
313            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
314            "cmp-long");
315
316    public static final Dop IF_EQ =
317        new Dop(DalvOps.IF_EQ, DalvOps.IF_EQ,
318            DalvOps.NO_NEXT, Form22t.THE_ONE, false,
319            "if-eq");
320
321    public static final Dop IF_NE =
322        new Dop(DalvOps.IF_NE, DalvOps.IF_NE,
323            DalvOps.NO_NEXT, Form22t.THE_ONE, false,
324            "if-ne");
325
326    public static final Dop IF_LT =
327        new Dop(DalvOps.IF_LT, DalvOps.IF_LT,
328            DalvOps.NO_NEXT, Form22t.THE_ONE, false,
329            "if-lt");
330
331    public static final Dop IF_GE =
332        new Dop(DalvOps.IF_GE, DalvOps.IF_GE,
333            DalvOps.NO_NEXT, Form22t.THE_ONE, false,
334            "if-ge");
335
336    public static final Dop IF_GT =
337        new Dop(DalvOps.IF_GT, DalvOps.IF_GT,
338            DalvOps.NO_NEXT, Form22t.THE_ONE, false,
339            "if-gt");
340
341    public static final Dop IF_LE =
342        new Dop(DalvOps.IF_LE, DalvOps.IF_LE,
343            DalvOps.NO_NEXT, Form22t.THE_ONE, false,
344            "if-le");
345
346    public static final Dop IF_EQZ =
347        new Dop(DalvOps.IF_EQZ, DalvOps.IF_EQZ,
348            DalvOps.NO_NEXT, Form21t.THE_ONE, false,
349            "if-eqz");
350
351    public static final Dop IF_NEZ =
352        new Dop(DalvOps.IF_NEZ, DalvOps.IF_NEZ,
353            DalvOps.NO_NEXT, Form21t.THE_ONE, false,
354            "if-nez");
355
356    public static final Dop IF_LTZ =
357        new Dop(DalvOps.IF_LTZ, DalvOps.IF_LTZ,
358            DalvOps.NO_NEXT, Form21t.THE_ONE, false,
359            "if-ltz");
360
361    public static final Dop IF_GEZ =
362        new Dop(DalvOps.IF_GEZ, DalvOps.IF_GEZ,
363            DalvOps.NO_NEXT, Form21t.THE_ONE, false,
364            "if-gez");
365
366    public static final Dop IF_GTZ =
367        new Dop(DalvOps.IF_GTZ, DalvOps.IF_GTZ,
368            DalvOps.NO_NEXT, Form21t.THE_ONE, false,
369            "if-gtz");
370
371    public static final Dop IF_LEZ =
372        new Dop(DalvOps.IF_LEZ, DalvOps.IF_LEZ,
373            DalvOps.NO_NEXT, Form21t.THE_ONE, false,
374            "if-lez");
375
376    public static final Dop AGET =
377        new Dop(DalvOps.AGET, DalvOps.AGET,
378            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
379            "aget");
380
381    public static final Dop AGET_WIDE =
382        new Dop(DalvOps.AGET_WIDE, DalvOps.AGET_WIDE,
383            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
384            "aget-wide");
385
386    public static final Dop AGET_OBJECT =
387        new Dop(DalvOps.AGET_OBJECT, DalvOps.AGET_OBJECT,
388            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
389            "aget-object");
390
391    public static final Dop AGET_BOOLEAN =
392        new Dop(DalvOps.AGET_BOOLEAN, DalvOps.AGET_BOOLEAN,
393            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
394            "aget-boolean");
395
396    public static final Dop AGET_BYTE =
397        new Dop(DalvOps.AGET_BYTE, DalvOps.AGET_BYTE,
398            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
399            "aget-byte");
400
401    public static final Dop AGET_CHAR =
402        new Dop(DalvOps.AGET_CHAR, DalvOps.AGET_CHAR,
403            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
404            "aget-char");
405
406    public static final Dop AGET_SHORT =
407        new Dop(DalvOps.AGET_SHORT, DalvOps.AGET_SHORT,
408            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
409            "aget-short");
410
411    public static final Dop APUT =
412        new Dop(DalvOps.APUT, DalvOps.APUT,
413            DalvOps.NO_NEXT, Form23x.THE_ONE, false,
414            "aput");
415
416    public static final Dop APUT_WIDE =
417        new Dop(DalvOps.APUT_WIDE, DalvOps.APUT_WIDE,
418            DalvOps.NO_NEXT, Form23x.THE_ONE, false,
419            "aput-wide");
420
421    public static final Dop APUT_OBJECT =
422        new Dop(DalvOps.APUT_OBJECT, DalvOps.APUT_OBJECT,
423            DalvOps.NO_NEXT, Form23x.THE_ONE, false,
424            "aput-object");
425
426    public static final Dop APUT_BOOLEAN =
427        new Dop(DalvOps.APUT_BOOLEAN, DalvOps.APUT_BOOLEAN,
428            DalvOps.NO_NEXT, Form23x.THE_ONE, false,
429            "aput-boolean");
430
431    public static final Dop APUT_BYTE =
432        new Dop(DalvOps.APUT_BYTE, DalvOps.APUT_BYTE,
433            DalvOps.NO_NEXT, Form23x.THE_ONE, false,
434            "aput-byte");
435
436    public static final Dop APUT_CHAR =
437        new Dop(DalvOps.APUT_CHAR, DalvOps.APUT_CHAR,
438            DalvOps.NO_NEXT, Form23x.THE_ONE, false,
439            "aput-char");
440
441    public static final Dop APUT_SHORT =
442        new Dop(DalvOps.APUT_SHORT, DalvOps.APUT_SHORT,
443            DalvOps.NO_NEXT, Form23x.THE_ONE, false,
444            "aput-short");
445
446    public static final Dop IGET =
447        new Dop(DalvOps.IGET, DalvOps.IGET,
448            DalvOps.IGET_JUMBO, Form22c.THE_ONE, true,
449            "iget");
450
451    public static final Dop IGET_WIDE =
452        new Dop(DalvOps.IGET_WIDE, DalvOps.IGET_WIDE,
453            DalvOps.IGET_WIDE_JUMBO, Form22c.THE_ONE, true,
454            "iget-wide");
455
456    public static final Dop IGET_OBJECT =
457        new Dop(DalvOps.IGET_OBJECT, DalvOps.IGET_OBJECT,
458            DalvOps.IGET_OBJECT_JUMBO, Form22c.THE_ONE, true,
459            "iget-object");
460
461    public static final Dop IGET_BOOLEAN =
462        new Dop(DalvOps.IGET_BOOLEAN, DalvOps.IGET_BOOLEAN,
463            DalvOps.IGET_BOOLEAN_JUMBO, Form22c.THE_ONE, true,
464            "iget-boolean");
465
466    public static final Dop IGET_BYTE =
467        new Dop(DalvOps.IGET_BYTE, DalvOps.IGET_BYTE,
468            DalvOps.IGET_BYTE_JUMBO, Form22c.THE_ONE, true,
469            "iget-byte");
470
471    public static final Dop IGET_CHAR =
472        new Dop(DalvOps.IGET_CHAR, DalvOps.IGET_CHAR,
473            DalvOps.IGET_CHAR_JUMBO, Form22c.THE_ONE, true,
474            "iget-char");
475
476    public static final Dop IGET_SHORT =
477        new Dop(DalvOps.IGET_SHORT, DalvOps.IGET_SHORT,
478            DalvOps.IGET_SHORT_JUMBO, Form22c.THE_ONE, true,
479            "iget-short");
480
481    public static final Dop IPUT =
482        new Dop(DalvOps.IPUT, DalvOps.IPUT,
483            DalvOps.IPUT_JUMBO, Form22c.THE_ONE, false,
484            "iput");
485
486    public static final Dop IPUT_WIDE =
487        new Dop(DalvOps.IPUT_WIDE, DalvOps.IPUT_WIDE,
488            DalvOps.IPUT_WIDE_JUMBO, Form22c.THE_ONE, false,
489            "iput-wide");
490
491    public static final Dop IPUT_OBJECT =
492        new Dop(DalvOps.IPUT_OBJECT, DalvOps.IPUT_OBJECT,
493            DalvOps.IPUT_OBJECT_JUMBO, Form22c.THE_ONE, false,
494            "iput-object");
495
496    public static final Dop IPUT_BOOLEAN =
497        new Dop(DalvOps.IPUT_BOOLEAN, DalvOps.IPUT_BOOLEAN,
498            DalvOps.IPUT_BOOLEAN_JUMBO, Form22c.THE_ONE, false,
499            "iput-boolean");
500
501    public static final Dop IPUT_BYTE =
502        new Dop(DalvOps.IPUT_BYTE, DalvOps.IPUT_BYTE,
503            DalvOps.IPUT_BYTE_JUMBO, Form22c.THE_ONE, false,
504            "iput-byte");
505
506    public static final Dop IPUT_CHAR =
507        new Dop(DalvOps.IPUT_CHAR, DalvOps.IPUT_CHAR,
508            DalvOps.IPUT_CHAR_JUMBO, Form22c.THE_ONE, false,
509            "iput-char");
510
511    public static final Dop IPUT_SHORT =
512        new Dop(DalvOps.IPUT_SHORT, DalvOps.IPUT_SHORT,
513            DalvOps.IPUT_SHORT_JUMBO, Form22c.THE_ONE, false,
514            "iput-short");
515
516    public static final Dop SGET =
517        new Dop(DalvOps.SGET, DalvOps.SGET,
518            DalvOps.SGET_JUMBO, Form21c.THE_ONE, true,
519            "sget");
520
521    public static final Dop SGET_WIDE =
522        new Dop(DalvOps.SGET_WIDE, DalvOps.SGET_WIDE,
523            DalvOps.SGET_WIDE_JUMBO, Form21c.THE_ONE, true,
524            "sget-wide");
525
526    public static final Dop SGET_OBJECT =
527        new Dop(DalvOps.SGET_OBJECT, DalvOps.SGET_OBJECT,
528            DalvOps.SGET_OBJECT_JUMBO, Form21c.THE_ONE, true,
529            "sget-object");
530
531    public static final Dop SGET_BOOLEAN =
532        new Dop(DalvOps.SGET_BOOLEAN, DalvOps.SGET_BOOLEAN,
533            DalvOps.SGET_BOOLEAN_JUMBO, Form21c.THE_ONE, true,
534            "sget-boolean");
535
536    public static final Dop SGET_BYTE =
537        new Dop(DalvOps.SGET_BYTE, DalvOps.SGET_BYTE,
538            DalvOps.SGET_BYTE_JUMBO, Form21c.THE_ONE, true,
539            "sget-byte");
540
541    public static final Dop SGET_CHAR =
542        new Dop(DalvOps.SGET_CHAR, DalvOps.SGET_CHAR,
543            DalvOps.SGET_CHAR_JUMBO, Form21c.THE_ONE, true,
544            "sget-char");
545
546    public static final Dop SGET_SHORT =
547        new Dop(DalvOps.SGET_SHORT, DalvOps.SGET_SHORT,
548            DalvOps.SGET_SHORT_JUMBO, Form21c.THE_ONE, true,
549            "sget-short");
550
551    public static final Dop SPUT =
552        new Dop(DalvOps.SPUT, DalvOps.SPUT,
553            DalvOps.SPUT_JUMBO, Form21c.THE_ONE, false,
554            "sput");
555
556    public static final Dop SPUT_WIDE =
557        new Dop(DalvOps.SPUT_WIDE, DalvOps.SPUT_WIDE,
558            DalvOps.SPUT_WIDE_JUMBO, Form21c.THE_ONE, false,
559            "sput-wide");
560
561    public static final Dop SPUT_OBJECT =
562        new Dop(DalvOps.SPUT_OBJECT, DalvOps.SPUT_OBJECT,
563            DalvOps.SPUT_OBJECT_JUMBO, Form21c.THE_ONE, false,
564            "sput-object");
565
566    public static final Dop SPUT_BOOLEAN =
567        new Dop(DalvOps.SPUT_BOOLEAN, DalvOps.SPUT_BOOLEAN,
568            DalvOps.SPUT_BOOLEAN_JUMBO, Form21c.THE_ONE, false,
569            "sput-boolean");
570
571    public static final Dop SPUT_BYTE =
572        new Dop(DalvOps.SPUT_BYTE, DalvOps.SPUT_BYTE,
573            DalvOps.SPUT_BYTE_JUMBO, Form21c.THE_ONE, false,
574            "sput-byte");
575
576    public static final Dop SPUT_CHAR =
577        new Dop(DalvOps.SPUT_CHAR, DalvOps.SPUT_CHAR,
578            DalvOps.SPUT_CHAR_JUMBO, Form21c.THE_ONE, false,
579            "sput-char");
580
581    public static final Dop SPUT_SHORT =
582        new Dop(DalvOps.SPUT_SHORT, DalvOps.SPUT_SHORT,
583            DalvOps.SPUT_SHORT_JUMBO, Form21c.THE_ONE, false,
584            "sput-short");
585
586    public static final Dop INVOKE_VIRTUAL =
587        new Dop(DalvOps.INVOKE_VIRTUAL, DalvOps.INVOKE_VIRTUAL,
588            DalvOps.INVOKE_VIRTUAL_RANGE, Form35c.THE_ONE, false,
589            "invoke-virtual");
590
591    public static final Dop INVOKE_SUPER =
592        new Dop(DalvOps.INVOKE_SUPER, DalvOps.INVOKE_SUPER,
593            DalvOps.INVOKE_SUPER_RANGE, Form35c.THE_ONE, false,
594            "invoke-super");
595
596    public static final Dop INVOKE_DIRECT =
597        new Dop(DalvOps.INVOKE_DIRECT, DalvOps.INVOKE_DIRECT,
598            DalvOps.INVOKE_DIRECT_RANGE, Form35c.THE_ONE, false,
599            "invoke-direct");
600
601    public static final Dop INVOKE_STATIC =
602        new Dop(DalvOps.INVOKE_STATIC, DalvOps.INVOKE_STATIC,
603            DalvOps.INVOKE_STATIC_RANGE, Form35c.THE_ONE, false,
604            "invoke-static");
605
606    public static final Dop INVOKE_INTERFACE =
607        new Dop(DalvOps.INVOKE_INTERFACE, DalvOps.INVOKE_INTERFACE,
608            DalvOps.INVOKE_INTERFACE_RANGE, Form35c.THE_ONE, false,
609            "invoke-interface");
610
611    public static final Dop INVOKE_VIRTUAL_RANGE =
612        new Dop(DalvOps.INVOKE_VIRTUAL_RANGE, DalvOps.INVOKE_VIRTUAL,
613            DalvOps.INVOKE_VIRTUAL_JUMBO, Form3rc.THE_ONE, false,
614            "invoke-virtual/range");
615
616    public static final Dop INVOKE_SUPER_RANGE =
617        new Dop(DalvOps.INVOKE_SUPER_RANGE, DalvOps.INVOKE_SUPER,
618            DalvOps.INVOKE_SUPER_JUMBO, Form3rc.THE_ONE, false,
619            "invoke-super/range");
620
621    public static final Dop INVOKE_DIRECT_RANGE =
622        new Dop(DalvOps.INVOKE_DIRECT_RANGE, DalvOps.INVOKE_DIRECT,
623            DalvOps.INVOKE_DIRECT_JUMBO, Form3rc.THE_ONE, false,
624            "invoke-direct/range");
625
626    public static final Dop INVOKE_STATIC_RANGE =
627        new Dop(DalvOps.INVOKE_STATIC_RANGE, DalvOps.INVOKE_STATIC,
628            DalvOps.INVOKE_STATIC_JUMBO, Form3rc.THE_ONE, false,
629            "invoke-static/range");
630
631    public static final Dop INVOKE_INTERFACE_RANGE =
632        new Dop(DalvOps.INVOKE_INTERFACE_RANGE, DalvOps.INVOKE_INTERFACE,
633            DalvOps.INVOKE_INTERFACE_JUMBO, Form3rc.THE_ONE, false,
634            "invoke-interface/range");
635
636    public static final Dop NEG_INT =
637        new Dop(DalvOps.NEG_INT, DalvOps.NEG_INT,
638            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
639            "neg-int");
640
641    public static final Dop NOT_INT =
642        new Dop(DalvOps.NOT_INT, DalvOps.NOT_INT,
643            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
644            "not-int");
645
646    public static final Dop NEG_LONG =
647        new Dop(DalvOps.NEG_LONG, DalvOps.NEG_LONG,
648            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
649            "neg-long");
650
651    public static final Dop NOT_LONG =
652        new Dop(DalvOps.NOT_LONG, DalvOps.NOT_LONG,
653            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
654            "not-long");
655
656    public static final Dop NEG_FLOAT =
657        new Dop(DalvOps.NEG_FLOAT, DalvOps.NEG_FLOAT,
658            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
659            "neg-float");
660
661    public static final Dop NEG_DOUBLE =
662        new Dop(DalvOps.NEG_DOUBLE, DalvOps.NEG_DOUBLE,
663            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
664            "neg-double");
665
666    public static final Dop INT_TO_LONG =
667        new Dop(DalvOps.INT_TO_LONG, DalvOps.INT_TO_LONG,
668            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
669            "int-to-long");
670
671    public static final Dop INT_TO_FLOAT =
672        new Dop(DalvOps.INT_TO_FLOAT, DalvOps.INT_TO_FLOAT,
673            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
674            "int-to-float");
675
676    public static final Dop INT_TO_DOUBLE =
677        new Dop(DalvOps.INT_TO_DOUBLE, DalvOps.INT_TO_DOUBLE,
678            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
679            "int-to-double");
680
681    public static final Dop LONG_TO_INT =
682        new Dop(DalvOps.LONG_TO_INT, DalvOps.LONG_TO_INT,
683            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
684            "long-to-int");
685
686    public static final Dop LONG_TO_FLOAT =
687        new Dop(DalvOps.LONG_TO_FLOAT, DalvOps.LONG_TO_FLOAT,
688            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
689            "long-to-float");
690
691    public static final Dop LONG_TO_DOUBLE =
692        new Dop(DalvOps.LONG_TO_DOUBLE, DalvOps.LONG_TO_DOUBLE,
693            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
694            "long-to-double");
695
696    public static final Dop FLOAT_TO_INT =
697        new Dop(DalvOps.FLOAT_TO_INT, DalvOps.FLOAT_TO_INT,
698            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
699            "float-to-int");
700
701    public static final Dop FLOAT_TO_LONG =
702        new Dop(DalvOps.FLOAT_TO_LONG, DalvOps.FLOAT_TO_LONG,
703            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
704            "float-to-long");
705
706    public static final Dop FLOAT_TO_DOUBLE =
707        new Dop(DalvOps.FLOAT_TO_DOUBLE, DalvOps.FLOAT_TO_DOUBLE,
708            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
709            "float-to-double");
710
711    public static final Dop DOUBLE_TO_INT =
712        new Dop(DalvOps.DOUBLE_TO_INT, DalvOps.DOUBLE_TO_INT,
713            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
714            "double-to-int");
715
716    public static final Dop DOUBLE_TO_LONG =
717        new Dop(DalvOps.DOUBLE_TO_LONG, DalvOps.DOUBLE_TO_LONG,
718            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
719            "double-to-long");
720
721    public static final Dop DOUBLE_TO_FLOAT =
722        new Dop(DalvOps.DOUBLE_TO_FLOAT, DalvOps.DOUBLE_TO_FLOAT,
723            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
724            "double-to-float");
725
726    public static final Dop INT_TO_BYTE =
727        new Dop(DalvOps.INT_TO_BYTE, DalvOps.INT_TO_BYTE,
728            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
729            "int-to-byte");
730
731    public static final Dop INT_TO_CHAR =
732        new Dop(DalvOps.INT_TO_CHAR, DalvOps.INT_TO_CHAR,
733            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
734            "int-to-char");
735
736    public static final Dop INT_TO_SHORT =
737        new Dop(DalvOps.INT_TO_SHORT, DalvOps.INT_TO_SHORT,
738            DalvOps.NO_NEXT, Form12x.THE_ONE, true,
739            "int-to-short");
740
741    public static final Dop ADD_INT =
742        new Dop(DalvOps.ADD_INT, DalvOps.ADD_INT,
743            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
744            "add-int");
745
746    public static final Dop SUB_INT =
747        new Dop(DalvOps.SUB_INT, DalvOps.SUB_INT,
748            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
749            "sub-int");
750
751    public static final Dop MUL_INT =
752        new Dop(DalvOps.MUL_INT, DalvOps.MUL_INT,
753            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
754            "mul-int");
755
756    public static final Dop DIV_INT =
757        new Dop(DalvOps.DIV_INT, DalvOps.DIV_INT,
758            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
759            "div-int");
760
761    public static final Dop REM_INT =
762        new Dop(DalvOps.REM_INT, DalvOps.REM_INT,
763            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
764            "rem-int");
765
766    public static final Dop AND_INT =
767        new Dop(DalvOps.AND_INT, DalvOps.AND_INT,
768            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
769            "and-int");
770
771    public static final Dop OR_INT =
772        new Dop(DalvOps.OR_INT, DalvOps.OR_INT,
773            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
774            "or-int");
775
776    public static final Dop XOR_INT =
777        new Dop(DalvOps.XOR_INT, DalvOps.XOR_INT,
778            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
779            "xor-int");
780
781    public static final Dop SHL_INT =
782        new Dop(DalvOps.SHL_INT, DalvOps.SHL_INT,
783            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
784            "shl-int");
785
786    public static final Dop SHR_INT =
787        new Dop(DalvOps.SHR_INT, DalvOps.SHR_INT,
788            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
789            "shr-int");
790
791    public static final Dop USHR_INT =
792        new Dop(DalvOps.USHR_INT, DalvOps.USHR_INT,
793            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
794            "ushr-int");
795
796    public static final Dop ADD_LONG =
797        new Dop(DalvOps.ADD_LONG, DalvOps.ADD_LONG,
798            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
799            "add-long");
800
801    public static final Dop SUB_LONG =
802        new Dop(DalvOps.SUB_LONG, DalvOps.SUB_LONG,
803            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
804            "sub-long");
805
806    public static final Dop MUL_LONG =
807        new Dop(DalvOps.MUL_LONG, DalvOps.MUL_LONG,
808            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
809            "mul-long");
810
811    public static final Dop DIV_LONG =
812        new Dop(DalvOps.DIV_LONG, DalvOps.DIV_LONG,
813            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
814            "div-long");
815
816    public static final Dop REM_LONG =
817        new Dop(DalvOps.REM_LONG, DalvOps.REM_LONG,
818            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
819            "rem-long");
820
821    public static final Dop AND_LONG =
822        new Dop(DalvOps.AND_LONG, DalvOps.AND_LONG,
823            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
824            "and-long");
825
826    public static final Dop OR_LONG =
827        new Dop(DalvOps.OR_LONG, DalvOps.OR_LONG,
828            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
829            "or-long");
830
831    public static final Dop XOR_LONG =
832        new Dop(DalvOps.XOR_LONG, DalvOps.XOR_LONG,
833            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
834            "xor-long");
835
836    public static final Dop SHL_LONG =
837        new Dop(DalvOps.SHL_LONG, DalvOps.SHL_LONG,
838            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
839            "shl-long");
840
841    public static final Dop SHR_LONG =
842        new Dop(DalvOps.SHR_LONG, DalvOps.SHR_LONG,
843            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
844            "shr-long");
845
846    public static final Dop USHR_LONG =
847        new Dop(DalvOps.USHR_LONG, DalvOps.USHR_LONG,
848            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
849            "ushr-long");
850
851    public static final Dop ADD_FLOAT =
852        new Dop(DalvOps.ADD_FLOAT, DalvOps.ADD_FLOAT,
853            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
854            "add-float");
855
856    public static final Dop SUB_FLOAT =
857        new Dop(DalvOps.SUB_FLOAT, DalvOps.SUB_FLOAT,
858            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
859            "sub-float");
860
861    public static final Dop MUL_FLOAT =
862        new Dop(DalvOps.MUL_FLOAT, DalvOps.MUL_FLOAT,
863            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
864            "mul-float");
865
866    public static final Dop DIV_FLOAT =
867        new Dop(DalvOps.DIV_FLOAT, DalvOps.DIV_FLOAT,
868            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
869            "div-float");
870
871    public static final Dop REM_FLOAT =
872        new Dop(DalvOps.REM_FLOAT, DalvOps.REM_FLOAT,
873            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
874            "rem-float");
875
876    public static final Dop ADD_DOUBLE =
877        new Dop(DalvOps.ADD_DOUBLE, DalvOps.ADD_DOUBLE,
878            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
879            "add-double");
880
881    public static final Dop SUB_DOUBLE =
882        new Dop(DalvOps.SUB_DOUBLE, DalvOps.SUB_DOUBLE,
883            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
884            "sub-double");
885
886    public static final Dop MUL_DOUBLE =
887        new Dop(DalvOps.MUL_DOUBLE, DalvOps.MUL_DOUBLE,
888            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
889            "mul-double");
890
891    public static final Dop DIV_DOUBLE =
892        new Dop(DalvOps.DIV_DOUBLE, DalvOps.DIV_DOUBLE,
893            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
894            "div-double");
895
896    public static final Dop REM_DOUBLE =
897        new Dop(DalvOps.REM_DOUBLE, DalvOps.REM_DOUBLE,
898            DalvOps.NO_NEXT, Form23x.THE_ONE, true,
899            "rem-double");
900
901    public static final Dop ADD_INT_2ADDR =
902        new Dop(DalvOps.ADD_INT_2ADDR, DalvOps.ADD_INT,
903            DalvOps.ADD_INT, Form12x.THE_ONE, true,
904            "add-int/2addr");
905
906    public static final Dop SUB_INT_2ADDR =
907        new Dop(DalvOps.SUB_INT_2ADDR, DalvOps.SUB_INT,
908            DalvOps.SUB_INT, Form12x.THE_ONE, true,
909            "sub-int/2addr");
910
911    public static final Dop MUL_INT_2ADDR =
912        new Dop(DalvOps.MUL_INT_2ADDR, DalvOps.MUL_INT,
913            DalvOps.MUL_INT, Form12x.THE_ONE, true,
914            "mul-int/2addr");
915
916    public static final Dop DIV_INT_2ADDR =
917        new Dop(DalvOps.DIV_INT_2ADDR, DalvOps.DIV_INT,
918            DalvOps.DIV_INT, Form12x.THE_ONE, true,
919            "div-int/2addr");
920
921    public static final Dop REM_INT_2ADDR =
922        new Dop(DalvOps.REM_INT_2ADDR, DalvOps.REM_INT,
923            DalvOps.REM_INT, Form12x.THE_ONE, true,
924            "rem-int/2addr");
925
926    public static final Dop AND_INT_2ADDR =
927        new Dop(DalvOps.AND_INT_2ADDR, DalvOps.AND_INT,
928            DalvOps.AND_INT, Form12x.THE_ONE, true,
929            "and-int/2addr");
930
931    public static final Dop OR_INT_2ADDR =
932        new Dop(DalvOps.OR_INT_2ADDR, DalvOps.OR_INT,
933            DalvOps.OR_INT, Form12x.THE_ONE, true,
934            "or-int/2addr");
935
936    public static final Dop XOR_INT_2ADDR =
937        new Dop(DalvOps.XOR_INT_2ADDR, DalvOps.XOR_INT,
938            DalvOps.XOR_INT, Form12x.THE_ONE, true,
939            "xor-int/2addr");
940
941    public static final Dop SHL_INT_2ADDR =
942        new Dop(DalvOps.SHL_INT_2ADDR, DalvOps.SHL_INT,
943            DalvOps.SHL_INT, Form12x.THE_ONE, true,
944            "shl-int/2addr");
945
946    public static final Dop SHR_INT_2ADDR =
947        new Dop(DalvOps.SHR_INT_2ADDR, DalvOps.SHR_INT,
948            DalvOps.SHR_INT, Form12x.THE_ONE, true,
949            "shr-int/2addr");
950
951    public static final Dop USHR_INT_2ADDR =
952        new Dop(DalvOps.USHR_INT_2ADDR, DalvOps.USHR_INT,
953            DalvOps.USHR_INT, Form12x.THE_ONE, true,
954            "ushr-int/2addr");
955
956    public static final Dop ADD_LONG_2ADDR =
957        new Dop(DalvOps.ADD_LONG_2ADDR, DalvOps.ADD_LONG,
958            DalvOps.ADD_LONG, Form12x.THE_ONE, true,
959            "add-long/2addr");
960
961    public static final Dop SUB_LONG_2ADDR =
962        new Dop(DalvOps.SUB_LONG_2ADDR, DalvOps.SUB_LONG,
963            DalvOps.SUB_LONG, Form12x.THE_ONE, true,
964            "sub-long/2addr");
965
966    public static final Dop MUL_LONG_2ADDR =
967        new Dop(DalvOps.MUL_LONG_2ADDR, DalvOps.MUL_LONG,
968            DalvOps.MUL_LONG, Form12x.THE_ONE, true,
969            "mul-long/2addr");
970
971    public static final Dop DIV_LONG_2ADDR =
972        new Dop(DalvOps.DIV_LONG_2ADDR, DalvOps.DIV_LONG,
973            DalvOps.DIV_LONG, Form12x.THE_ONE, true,
974            "div-long/2addr");
975
976    public static final Dop REM_LONG_2ADDR =
977        new Dop(DalvOps.REM_LONG_2ADDR, DalvOps.REM_LONG,
978            DalvOps.REM_LONG, Form12x.THE_ONE, true,
979            "rem-long/2addr");
980
981    public static final Dop AND_LONG_2ADDR =
982        new Dop(DalvOps.AND_LONG_2ADDR, DalvOps.AND_LONG,
983            DalvOps.AND_LONG, Form12x.THE_ONE, true,
984            "and-long/2addr");
985
986    public static final Dop OR_LONG_2ADDR =
987        new Dop(DalvOps.OR_LONG_2ADDR, DalvOps.OR_LONG,
988            DalvOps.OR_LONG, Form12x.THE_ONE, true,
989            "or-long/2addr");
990
991    public static final Dop XOR_LONG_2ADDR =
992        new Dop(DalvOps.XOR_LONG_2ADDR, DalvOps.XOR_LONG,
993            DalvOps.XOR_LONG, Form12x.THE_ONE, true,
994            "xor-long/2addr");
995
996    public static final Dop SHL_LONG_2ADDR =
997        new Dop(DalvOps.SHL_LONG_2ADDR, DalvOps.SHL_LONG,
998            DalvOps.SHL_LONG, Form12x.THE_ONE, true,
999            "shl-long/2addr");
1000
1001    public static final Dop SHR_LONG_2ADDR =
1002        new Dop(DalvOps.SHR_LONG_2ADDR, DalvOps.SHR_LONG,
1003            DalvOps.SHR_LONG, Form12x.THE_ONE, true,
1004            "shr-long/2addr");
1005
1006    public static final Dop USHR_LONG_2ADDR =
1007        new Dop(DalvOps.USHR_LONG_2ADDR, DalvOps.USHR_LONG,
1008            DalvOps.USHR_LONG, Form12x.THE_ONE, true,
1009            "ushr-long/2addr");
1010
1011    public static final Dop ADD_FLOAT_2ADDR =
1012        new Dop(DalvOps.ADD_FLOAT_2ADDR, DalvOps.ADD_FLOAT,
1013            DalvOps.ADD_FLOAT, Form12x.THE_ONE, true,
1014            "add-float/2addr");
1015
1016    public static final Dop SUB_FLOAT_2ADDR =
1017        new Dop(DalvOps.SUB_FLOAT_2ADDR, DalvOps.SUB_FLOAT,
1018            DalvOps.SUB_FLOAT, Form12x.THE_ONE, true,
1019            "sub-float/2addr");
1020
1021    public static final Dop MUL_FLOAT_2ADDR =
1022        new Dop(DalvOps.MUL_FLOAT_2ADDR, DalvOps.MUL_FLOAT,
1023            DalvOps.MUL_FLOAT, Form12x.THE_ONE, true,
1024            "mul-float/2addr");
1025
1026    public static final Dop DIV_FLOAT_2ADDR =
1027        new Dop(DalvOps.DIV_FLOAT_2ADDR, DalvOps.DIV_FLOAT,
1028            DalvOps.DIV_FLOAT, Form12x.THE_ONE, true,
1029            "div-float/2addr");
1030
1031    public static final Dop REM_FLOAT_2ADDR =
1032        new Dop(DalvOps.REM_FLOAT_2ADDR, DalvOps.REM_FLOAT,
1033            DalvOps.REM_FLOAT, Form12x.THE_ONE, true,
1034            "rem-float/2addr");
1035
1036    public static final Dop ADD_DOUBLE_2ADDR =
1037        new Dop(DalvOps.ADD_DOUBLE_2ADDR, DalvOps.ADD_DOUBLE,
1038            DalvOps.ADD_DOUBLE, Form12x.THE_ONE, true,
1039            "add-double/2addr");
1040
1041    public static final Dop SUB_DOUBLE_2ADDR =
1042        new Dop(DalvOps.SUB_DOUBLE_2ADDR, DalvOps.SUB_DOUBLE,
1043            DalvOps.SUB_DOUBLE, Form12x.THE_ONE, true,
1044            "sub-double/2addr");
1045
1046    public static final Dop MUL_DOUBLE_2ADDR =
1047        new Dop(DalvOps.MUL_DOUBLE_2ADDR, DalvOps.MUL_DOUBLE,
1048            DalvOps.MUL_DOUBLE, Form12x.THE_ONE, true,
1049            "mul-double/2addr");
1050
1051    public static final Dop DIV_DOUBLE_2ADDR =
1052        new Dop(DalvOps.DIV_DOUBLE_2ADDR, DalvOps.DIV_DOUBLE,
1053            DalvOps.DIV_DOUBLE, Form12x.THE_ONE, true,
1054            "div-double/2addr");
1055
1056    public static final Dop REM_DOUBLE_2ADDR =
1057        new Dop(DalvOps.REM_DOUBLE_2ADDR, DalvOps.REM_DOUBLE,
1058            DalvOps.REM_DOUBLE, Form12x.THE_ONE, true,
1059            "rem-double/2addr");
1060
1061    public static final Dop ADD_INT_LIT16 =
1062        new Dop(DalvOps.ADD_INT_LIT16, DalvOps.ADD_INT,
1063            DalvOps.NO_NEXT, Form22s.THE_ONE, true,
1064            "add-int/lit16");
1065
1066    public static final Dop RSUB_INT =
1067        new Dop(DalvOps.RSUB_INT, DalvOps.RSUB_INT,
1068            DalvOps.NO_NEXT, Form22s.THE_ONE, true,
1069            "rsub-int");
1070
1071    public static final Dop MUL_INT_LIT16 =
1072        new Dop(DalvOps.MUL_INT_LIT16, DalvOps.MUL_INT,
1073            DalvOps.NO_NEXT, Form22s.THE_ONE, true,
1074            "mul-int/lit16");
1075
1076    public static final Dop DIV_INT_LIT16 =
1077        new Dop(DalvOps.DIV_INT_LIT16, DalvOps.DIV_INT,
1078            DalvOps.NO_NEXT, Form22s.THE_ONE, true,
1079            "div-int/lit16");
1080
1081    public static final Dop REM_INT_LIT16 =
1082        new Dop(DalvOps.REM_INT_LIT16, DalvOps.REM_INT,
1083            DalvOps.NO_NEXT, Form22s.THE_ONE, true,
1084            "rem-int/lit16");
1085
1086    public static final Dop AND_INT_LIT16 =
1087        new Dop(DalvOps.AND_INT_LIT16, DalvOps.AND_INT,
1088            DalvOps.NO_NEXT, Form22s.THE_ONE, true,
1089            "and-int/lit16");
1090
1091    public static final Dop OR_INT_LIT16 =
1092        new Dop(DalvOps.OR_INT_LIT16, DalvOps.OR_INT,
1093            DalvOps.NO_NEXT, Form22s.THE_ONE, true,
1094            "or-int/lit16");
1095
1096    public static final Dop XOR_INT_LIT16 =
1097        new Dop(DalvOps.XOR_INT_LIT16, DalvOps.XOR_INT,
1098            DalvOps.NO_NEXT, Form22s.THE_ONE, true,
1099            "xor-int/lit16");
1100
1101    public static final Dop ADD_INT_LIT8 =
1102        new Dop(DalvOps.ADD_INT_LIT8, DalvOps.ADD_INT,
1103            DalvOps.ADD_INT_LIT16, Form22b.THE_ONE, true,
1104            "add-int/lit8");
1105
1106    public static final Dop RSUB_INT_LIT8 =
1107        new Dop(DalvOps.RSUB_INT_LIT8, DalvOps.RSUB_INT,
1108            DalvOps.RSUB_INT, Form22b.THE_ONE, true,
1109            "rsub-int/lit8");
1110
1111    public static final Dop MUL_INT_LIT8 =
1112        new Dop(DalvOps.MUL_INT_LIT8, DalvOps.MUL_INT,
1113            DalvOps.MUL_INT_LIT16, Form22b.THE_ONE, true,
1114            "mul-int/lit8");
1115
1116    public static final Dop DIV_INT_LIT8 =
1117        new Dop(DalvOps.DIV_INT_LIT8, DalvOps.DIV_INT,
1118            DalvOps.DIV_INT_LIT16, Form22b.THE_ONE, true,
1119            "div-int/lit8");
1120
1121    public static final Dop REM_INT_LIT8 =
1122        new Dop(DalvOps.REM_INT_LIT8, DalvOps.REM_INT,
1123            DalvOps.REM_INT_LIT16, Form22b.THE_ONE, true,
1124            "rem-int/lit8");
1125
1126    public static final Dop AND_INT_LIT8 =
1127        new Dop(DalvOps.AND_INT_LIT8, DalvOps.AND_INT,
1128            DalvOps.AND_INT_LIT16, Form22b.THE_ONE, true,
1129            "and-int/lit8");
1130
1131    public static final Dop OR_INT_LIT8 =
1132        new Dop(DalvOps.OR_INT_LIT8, DalvOps.OR_INT,
1133            DalvOps.OR_INT_LIT16, Form22b.THE_ONE, true,
1134            "or-int/lit8");
1135
1136    public static final Dop XOR_INT_LIT8 =
1137        new Dop(DalvOps.XOR_INT_LIT8, DalvOps.XOR_INT,
1138            DalvOps.XOR_INT_LIT16, Form22b.THE_ONE, true,
1139            "xor-int/lit8");
1140
1141    public static final Dop SHL_INT_LIT8 =
1142        new Dop(DalvOps.SHL_INT_LIT8, DalvOps.SHL_INT,
1143            DalvOps.NO_NEXT, Form22b.THE_ONE, true,
1144            "shl-int/lit8");
1145
1146    public static final Dop SHR_INT_LIT8 =
1147        new Dop(DalvOps.SHR_INT_LIT8, DalvOps.SHR_INT,
1148            DalvOps.NO_NEXT, Form22b.THE_ONE, true,
1149            "shr-int/lit8");
1150
1151    public static final Dop USHR_INT_LIT8 =
1152        new Dop(DalvOps.USHR_INT_LIT8, DalvOps.USHR_INT,
1153            DalvOps.NO_NEXT, Form22b.THE_ONE, true,
1154            "ushr-int/lit8");
1155
1156    public static final Dop CONST_CLASS_JUMBO =
1157        new Dop(DalvOps.CONST_CLASS_JUMBO, DalvOps.CONST_CLASS,
1158            DalvOps.NO_NEXT, Form41c.THE_ONE, true,
1159            "const-class/jumbo");
1160
1161    public static final Dop CHECK_CAST_JUMBO =
1162        new Dop(DalvOps.CHECK_CAST_JUMBO, DalvOps.CHECK_CAST,
1163            DalvOps.NO_NEXT, Form41c.THE_ONE, false,
1164            "check-cast/jumbo");
1165
1166    public static final Dop INSTANCE_OF_JUMBO =
1167        new Dop(DalvOps.INSTANCE_OF_JUMBO, DalvOps.INSTANCE_OF,
1168            DalvOps.NO_NEXT, Form52c.THE_ONE, true,
1169            "instance-of/jumbo");
1170
1171    public static final Dop NEW_INSTANCE_JUMBO =
1172        new Dop(DalvOps.NEW_INSTANCE_JUMBO, DalvOps.NEW_INSTANCE,
1173            DalvOps.NO_NEXT, Form41c.THE_ONE, true,
1174            "new-instance/jumbo");
1175
1176    public static final Dop NEW_ARRAY_JUMBO =
1177        new Dop(DalvOps.NEW_ARRAY_JUMBO, DalvOps.NEW_ARRAY,
1178            DalvOps.NO_NEXT, Form52c.THE_ONE, true,
1179            "new-array/jumbo");
1180
1181    public static final Dop FILLED_NEW_ARRAY_JUMBO =
1182        new Dop(DalvOps.FILLED_NEW_ARRAY_JUMBO, DalvOps.FILLED_NEW_ARRAY,
1183            DalvOps.NO_NEXT, Form5rc.THE_ONE, false,
1184            "filled-new-array/jumbo");
1185
1186    public static final Dop IGET_JUMBO =
1187        new Dop(DalvOps.IGET_JUMBO, DalvOps.IGET,
1188            DalvOps.NO_NEXT, Form52c.THE_ONE, true,
1189            "iget/jumbo");
1190
1191    public static final Dop IGET_WIDE_JUMBO =
1192        new Dop(DalvOps.IGET_WIDE_JUMBO, DalvOps.IGET_WIDE,
1193            DalvOps.NO_NEXT, Form52c.THE_ONE, true,
1194            "iget-wide/jumbo");
1195
1196    public static final Dop IGET_OBJECT_JUMBO =
1197        new Dop(DalvOps.IGET_OBJECT_JUMBO, DalvOps.IGET_OBJECT,
1198            DalvOps.NO_NEXT, Form52c.THE_ONE, true,
1199            "iget-object/jumbo");
1200
1201    public static final Dop IGET_BOOLEAN_JUMBO =
1202        new Dop(DalvOps.IGET_BOOLEAN_JUMBO, DalvOps.IGET_BOOLEAN,
1203            DalvOps.NO_NEXT, Form52c.THE_ONE, true,
1204            "iget-boolean/jumbo");
1205
1206    public static final Dop IGET_BYTE_JUMBO =
1207        new Dop(DalvOps.IGET_BYTE_JUMBO, DalvOps.IGET_BYTE,
1208            DalvOps.NO_NEXT, Form52c.THE_ONE, true,
1209            "iget-byte/jumbo");
1210
1211    public static final Dop IGET_CHAR_JUMBO =
1212        new Dop(DalvOps.IGET_CHAR_JUMBO, DalvOps.IGET_CHAR,
1213            DalvOps.NO_NEXT, Form52c.THE_ONE, true,
1214            "iget-char/jumbo");
1215
1216    public static final Dop IGET_SHORT_JUMBO =
1217        new Dop(DalvOps.IGET_SHORT_JUMBO, DalvOps.IGET_SHORT,
1218            DalvOps.NO_NEXT, Form52c.THE_ONE, true,
1219            "iget-short/jumbo");
1220
1221    public static final Dop IPUT_JUMBO =
1222        new Dop(DalvOps.IPUT_JUMBO, DalvOps.IPUT,
1223            DalvOps.NO_NEXT, Form52c.THE_ONE, false,
1224            "iput/jumbo");
1225
1226    public static final Dop IPUT_WIDE_JUMBO =
1227        new Dop(DalvOps.IPUT_WIDE_JUMBO, DalvOps.IPUT_WIDE,
1228            DalvOps.NO_NEXT, Form52c.THE_ONE, false,
1229            "iput-wide/jumbo");
1230
1231    public static final Dop IPUT_OBJECT_JUMBO =
1232        new Dop(DalvOps.IPUT_OBJECT_JUMBO, DalvOps.IPUT_OBJECT,
1233            DalvOps.NO_NEXT, Form52c.THE_ONE, false,
1234            "iput-object/jumbo");
1235
1236    public static final Dop IPUT_BOOLEAN_JUMBO =
1237        new Dop(DalvOps.IPUT_BOOLEAN_JUMBO, DalvOps.IPUT_BOOLEAN,
1238            DalvOps.NO_NEXT, Form52c.THE_ONE, false,
1239            "iput-boolean/jumbo");
1240
1241    public static final Dop IPUT_BYTE_JUMBO =
1242        new Dop(DalvOps.IPUT_BYTE_JUMBO, DalvOps.IPUT_BYTE,
1243            DalvOps.NO_NEXT, Form52c.THE_ONE, false,
1244            "iput-byte/jumbo");
1245
1246    public static final Dop IPUT_CHAR_JUMBO =
1247        new Dop(DalvOps.IPUT_CHAR_JUMBO, DalvOps.IPUT_CHAR,
1248            DalvOps.NO_NEXT, Form52c.THE_ONE, false,
1249            "iput-char/jumbo");
1250
1251    public static final Dop IPUT_SHORT_JUMBO =
1252        new Dop(DalvOps.IPUT_SHORT_JUMBO, DalvOps.IPUT_SHORT,
1253            DalvOps.NO_NEXT, Form52c.THE_ONE, false,
1254            "iput-short/jumbo");
1255
1256    public static final Dop SGET_JUMBO =
1257        new Dop(DalvOps.SGET_JUMBO, DalvOps.SGET,
1258            DalvOps.NO_NEXT, Form41c.THE_ONE, true,
1259            "sget/jumbo");
1260
1261    public static final Dop SGET_WIDE_JUMBO =
1262        new Dop(DalvOps.SGET_WIDE_JUMBO, DalvOps.SGET_WIDE,
1263            DalvOps.NO_NEXT, Form41c.THE_ONE, true,
1264            "sget-wide/jumbo");
1265
1266    public static final Dop SGET_OBJECT_JUMBO =
1267        new Dop(DalvOps.SGET_OBJECT_JUMBO, DalvOps.SGET_OBJECT,
1268            DalvOps.NO_NEXT, Form41c.THE_ONE, true,
1269            "sget-object/jumbo");
1270
1271    public static final Dop SGET_BOOLEAN_JUMBO =
1272        new Dop(DalvOps.SGET_BOOLEAN_JUMBO, DalvOps.SGET_BOOLEAN,
1273            DalvOps.NO_NEXT, Form41c.THE_ONE, true,
1274            "sget-boolean/jumbo");
1275
1276    public static final Dop SGET_BYTE_JUMBO =
1277        new Dop(DalvOps.SGET_BYTE_JUMBO, DalvOps.SGET_BYTE,
1278            DalvOps.NO_NEXT, Form41c.THE_ONE, true,
1279            "sget-byte/jumbo");
1280
1281    public static final Dop SGET_CHAR_JUMBO =
1282        new Dop(DalvOps.SGET_CHAR_JUMBO, DalvOps.SGET_CHAR,
1283            DalvOps.NO_NEXT, Form41c.THE_ONE, true,
1284            "sget-char/jumbo");
1285
1286    public static final Dop SGET_SHORT_JUMBO =
1287        new Dop(DalvOps.SGET_SHORT_JUMBO, DalvOps.SGET_SHORT,
1288            DalvOps.NO_NEXT, Form41c.THE_ONE, true,
1289            "sget-short/jumbo");
1290
1291    public static final Dop SPUT_JUMBO =
1292        new Dop(DalvOps.SPUT_JUMBO, DalvOps.SPUT,
1293            DalvOps.NO_NEXT, Form41c.THE_ONE, false,
1294            "sput/jumbo");
1295
1296    public static final Dop SPUT_WIDE_JUMBO =
1297        new Dop(DalvOps.SPUT_WIDE_JUMBO, DalvOps.SPUT_WIDE,
1298            DalvOps.NO_NEXT, Form41c.THE_ONE, false,
1299            "sput-wide/jumbo");
1300
1301    public static final Dop SPUT_OBJECT_JUMBO =
1302        new Dop(DalvOps.SPUT_OBJECT_JUMBO, DalvOps.SPUT_OBJECT,
1303            DalvOps.NO_NEXT, Form41c.THE_ONE, false,
1304            "sput-object/jumbo");
1305
1306    public static final Dop SPUT_BOOLEAN_JUMBO =
1307        new Dop(DalvOps.SPUT_BOOLEAN_JUMBO, DalvOps.SPUT_BOOLEAN,
1308            DalvOps.NO_NEXT, Form41c.THE_ONE, false,
1309            "sput-boolean/jumbo");
1310
1311    public static final Dop SPUT_BYTE_JUMBO =
1312        new Dop(DalvOps.SPUT_BYTE_JUMBO, DalvOps.SPUT_BYTE,
1313            DalvOps.NO_NEXT, Form41c.THE_ONE, false,
1314            "sput-byte/jumbo");
1315
1316    public static final Dop SPUT_CHAR_JUMBO =
1317        new Dop(DalvOps.SPUT_CHAR_JUMBO, DalvOps.SPUT_CHAR,
1318            DalvOps.NO_NEXT, Form41c.THE_ONE, false,
1319            "sput-char/jumbo");
1320
1321    public static final Dop SPUT_SHORT_JUMBO =
1322        new Dop(DalvOps.SPUT_SHORT_JUMBO, DalvOps.SPUT_SHORT,
1323            DalvOps.NO_NEXT, Form41c.THE_ONE, false,
1324            "sput-short/jumbo");
1325
1326    public static final Dop INVOKE_VIRTUAL_JUMBO =
1327        new Dop(DalvOps.INVOKE_VIRTUAL_JUMBO, DalvOps.INVOKE_VIRTUAL,
1328            DalvOps.NO_NEXT, Form5rc.THE_ONE, false,
1329            "invoke-virtual/jumbo");
1330
1331    public static final Dop INVOKE_SUPER_JUMBO =
1332        new Dop(DalvOps.INVOKE_SUPER_JUMBO, DalvOps.INVOKE_SUPER,
1333            DalvOps.NO_NEXT, Form5rc.THE_ONE, false,
1334            "invoke-super/jumbo");
1335
1336    public static final Dop INVOKE_DIRECT_JUMBO =
1337        new Dop(DalvOps.INVOKE_DIRECT_JUMBO, DalvOps.INVOKE_DIRECT,
1338            DalvOps.NO_NEXT, Form5rc.THE_ONE, false,
1339            "invoke-direct/jumbo");
1340
1341    public static final Dop INVOKE_STATIC_JUMBO =
1342        new Dop(DalvOps.INVOKE_STATIC_JUMBO, DalvOps.INVOKE_STATIC,
1343            DalvOps.NO_NEXT, Form5rc.THE_ONE, false,
1344            "invoke-static/jumbo");
1345
1346    public static final Dop INVOKE_INTERFACE_JUMBO =
1347        new Dop(DalvOps.INVOKE_INTERFACE_JUMBO, DalvOps.INVOKE_INTERFACE,
1348            DalvOps.NO_NEXT, Form5rc.THE_ONE, false,
1349            "invoke-interface/jumbo");
1350
1351    // END(dops)
1352
1353    // Static initialization.
1354    static {
1355        DOPS = new Dop[DalvOps.MAX_VALUE - DalvOps.MIN_VALUE + 1];
1356
1357        set(SPECIAL_FORMAT);
1358
1359        // BEGIN(dops-init); GENERATED AUTOMATICALLY BY opcode-gen
1360        set(NOP);
1361        set(MOVE);
1362        set(MOVE_FROM16);
1363        set(MOVE_16);
1364        set(MOVE_WIDE);
1365        set(MOVE_WIDE_FROM16);
1366        set(MOVE_WIDE_16);
1367        set(MOVE_OBJECT);
1368        set(MOVE_OBJECT_FROM16);
1369        set(MOVE_OBJECT_16);
1370        set(MOVE_RESULT);
1371        set(MOVE_RESULT_WIDE);
1372        set(MOVE_RESULT_OBJECT);
1373        set(MOVE_EXCEPTION);
1374        set(RETURN_VOID);
1375        set(RETURN);
1376        set(RETURN_WIDE);
1377        set(RETURN_OBJECT);
1378        set(CONST_4);
1379        set(CONST_16);
1380        set(CONST);
1381        set(CONST_HIGH16);
1382        set(CONST_WIDE_16);
1383        set(CONST_WIDE_32);
1384        set(CONST_WIDE);
1385        set(CONST_WIDE_HIGH16);
1386        set(CONST_STRING);
1387        set(CONST_STRING_JUMBO);
1388        set(CONST_CLASS);
1389        set(MONITOR_ENTER);
1390        set(MONITOR_EXIT);
1391        set(CHECK_CAST);
1392        set(INSTANCE_OF);
1393        set(ARRAY_LENGTH);
1394        set(NEW_INSTANCE);
1395        set(NEW_ARRAY);
1396        set(FILLED_NEW_ARRAY);
1397        set(FILLED_NEW_ARRAY_RANGE);
1398        set(FILL_ARRAY_DATA);
1399        set(THROW);
1400        set(GOTO);
1401        set(GOTO_16);
1402        set(GOTO_32);
1403        set(PACKED_SWITCH);
1404        set(SPARSE_SWITCH);
1405        set(CMPL_FLOAT);
1406        set(CMPG_FLOAT);
1407        set(CMPL_DOUBLE);
1408        set(CMPG_DOUBLE);
1409        set(CMP_LONG);
1410        set(IF_EQ);
1411        set(IF_NE);
1412        set(IF_LT);
1413        set(IF_GE);
1414        set(IF_GT);
1415        set(IF_LE);
1416        set(IF_EQZ);
1417        set(IF_NEZ);
1418        set(IF_LTZ);
1419        set(IF_GEZ);
1420        set(IF_GTZ);
1421        set(IF_LEZ);
1422        set(AGET);
1423        set(AGET_WIDE);
1424        set(AGET_OBJECT);
1425        set(AGET_BOOLEAN);
1426        set(AGET_BYTE);
1427        set(AGET_CHAR);
1428        set(AGET_SHORT);
1429        set(APUT);
1430        set(APUT_WIDE);
1431        set(APUT_OBJECT);
1432        set(APUT_BOOLEAN);
1433        set(APUT_BYTE);
1434        set(APUT_CHAR);
1435        set(APUT_SHORT);
1436        set(IGET);
1437        set(IGET_WIDE);
1438        set(IGET_OBJECT);
1439        set(IGET_BOOLEAN);
1440        set(IGET_BYTE);
1441        set(IGET_CHAR);
1442        set(IGET_SHORT);
1443        set(IPUT);
1444        set(IPUT_WIDE);
1445        set(IPUT_OBJECT);
1446        set(IPUT_BOOLEAN);
1447        set(IPUT_BYTE);
1448        set(IPUT_CHAR);
1449        set(IPUT_SHORT);
1450        set(SGET);
1451        set(SGET_WIDE);
1452        set(SGET_OBJECT);
1453        set(SGET_BOOLEAN);
1454        set(SGET_BYTE);
1455        set(SGET_CHAR);
1456        set(SGET_SHORT);
1457        set(SPUT);
1458        set(SPUT_WIDE);
1459        set(SPUT_OBJECT);
1460        set(SPUT_BOOLEAN);
1461        set(SPUT_BYTE);
1462        set(SPUT_CHAR);
1463        set(SPUT_SHORT);
1464        set(INVOKE_VIRTUAL);
1465        set(INVOKE_SUPER);
1466        set(INVOKE_DIRECT);
1467        set(INVOKE_STATIC);
1468        set(INVOKE_INTERFACE);
1469        set(INVOKE_VIRTUAL_RANGE);
1470        set(INVOKE_SUPER_RANGE);
1471        set(INVOKE_DIRECT_RANGE);
1472        set(INVOKE_STATIC_RANGE);
1473        set(INVOKE_INTERFACE_RANGE);
1474        set(NEG_INT);
1475        set(NOT_INT);
1476        set(NEG_LONG);
1477        set(NOT_LONG);
1478        set(NEG_FLOAT);
1479        set(NEG_DOUBLE);
1480        set(INT_TO_LONG);
1481        set(INT_TO_FLOAT);
1482        set(INT_TO_DOUBLE);
1483        set(LONG_TO_INT);
1484        set(LONG_TO_FLOAT);
1485        set(LONG_TO_DOUBLE);
1486        set(FLOAT_TO_INT);
1487        set(FLOAT_TO_LONG);
1488        set(FLOAT_TO_DOUBLE);
1489        set(DOUBLE_TO_INT);
1490        set(DOUBLE_TO_LONG);
1491        set(DOUBLE_TO_FLOAT);
1492        set(INT_TO_BYTE);
1493        set(INT_TO_CHAR);
1494        set(INT_TO_SHORT);
1495        set(ADD_INT);
1496        set(SUB_INT);
1497        set(MUL_INT);
1498        set(DIV_INT);
1499        set(REM_INT);
1500        set(AND_INT);
1501        set(OR_INT);
1502        set(XOR_INT);
1503        set(SHL_INT);
1504        set(SHR_INT);
1505        set(USHR_INT);
1506        set(ADD_LONG);
1507        set(SUB_LONG);
1508        set(MUL_LONG);
1509        set(DIV_LONG);
1510        set(REM_LONG);
1511        set(AND_LONG);
1512        set(OR_LONG);
1513        set(XOR_LONG);
1514        set(SHL_LONG);
1515        set(SHR_LONG);
1516        set(USHR_LONG);
1517        set(ADD_FLOAT);
1518        set(SUB_FLOAT);
1519        set(MUL_FLOAT);
1520        set(DIV_FLOAT);
1521        set(REM_FLOAT);
1522        set(ADD_DOUBLE);
1523        set(SUB_DOUBLE);
1524        set(MUL_DOUBLE);
1525        set(DIV_DOUBLE);
1526        set(REM_DOUBLE);
1527        set(ADD_INT_2ADDR);
1528        set(SUB_INT_2ADDR);
1529        set(MUL_INT_2ADDR);
1530        set(DIV_INT_2ADDR);
1531        set(REM_INT_2ADDR);
1532        set(AND_INT_2ADDR);
1533        set(OR_INT_2ADDR);
1534        set(XOR_INT_2ADDR);
1535        set(SHL_INT_2ADDR);
1536        set(SHR_INT_2ADDR);
1537        set(USHR_INT_2ADDR);
1538        set(ADD_LONG_2ADDR);
1539        set(SUB_LONG_2ADDR);
1540        set(MUL_LONG_2ADDR);
1541        set(DIV_LONG_2ADDR);
1542        set(REM_LONG_2ADDR);
1543        set(AND_LONG_2ADDR);
1544        set(OR_LONG_2ADDR);
1545        set(XOR_LONG_2ADDR);
1546        set(SHL_LONG_2ADDR);
1547        set(SHR_LONG_2ADDR);
1548        set(USHR_LONG_2ADDR);
1549        set(ADD_FLOAT_2ADDR);
1550        set(SUB_FLOAT_2ADDR);
1551        set(MUL_FLOAT_2ADDR);
1552        set(DIV_FLOAT_2ADDR);
1553        set(REM_FLOAT_2ADDR);
1554        set(ADD_DOUBLE_2ADDR);
1555        set(SUB_DOUBLE_2ADDR);
1556        set(MUL_DOUBLE_2ADDR);
1557        set(DIV_DOUBLE_2ADDR);
1558        set(REM_DOUBLE_2ADDR);
1559        set(ADD_INT_LIT16);
1560        set(RSUB_INT);
1561        set(MUL_INT_LIT16);
1562        set(DIV_INT_LIT16);
1563        set(REM_INT_LIT16);
1564        set(AND_INT_LIT16);
1565        set(OR_INT_LIT16);
1566        set(XOR_INT_LIT16);
1567        set(ADD_INT_LIT8);
1568        set(RSUB_INT_LIT8);
1569        set(MUL_INT_LIT8);
1570        set(DIV_INT_LIT8);
1571        set(REM_INT_LIT8);
1572        set(AND_INT_LIT8);
1573        set(OR_INT_LIT8);
1574        set(XOR_INT_LIT8);
1575        set(SHL_INT_LIT8);
1576        set(SHR_INT_LIT8);
1577        set(USHR_INT_LIT8);
1578        set(CONST_CLASS_JUMBO);
1579        set(CHECK_CAST_JUMBO);
1580        set(INSTANCE_OF_JUMBO);
1581        set(NEW_INSTANCE_JUMBO);
1582        set(NEW_ARRAY_JUMBO);
1583        set(FILLED_NEW_ARRAY_JUMBO);
1584        set(IGET_JUMBO);
1585        set(IGET_WIDE_JUMBO);
1586        set(IGET_OBJECT_JUMBO);
1587        set(IGET_BOOLEAN_JUMBO);
1588        set(IGET_BYTE_JUMBO);
1589        set(IGET_CHAR_JUMBO);
1590        set(IGET_SHORT_JUMBO);
1591        set(IPUT_JUMBO);
1592        set(IPUT_WIDE_JUMBO);
1593        set(IPUT_OBJECT_JUMBO);
1594        set(IPUT_BOOLEAN_JUMBO);
1595        set(IPUT_BYTE_JUMBO);
1596        set(IPUT_CHAR_JUMBO);
1597        set(IPUT_SHORT_JUMBO);
1598        set(SGET_JUMBO);
1599        set(SGET_WIDE_JUMBO);
1600        set(SGET_OBJECT_JUMBO);
1601        set(SGET_BOOLEAN_JUMBO);
1602        set(SGET_BYTE_JUMBO);
1603        set(SGET_CHAR_JUMBO);
1604        set(SGET_SHORT_JUMBO);
1605        set(SPUT_JUMBO);
1606        set(SPUT_WIDE_JUMBO);
1607        set(SPUT_OBJECT_JUMBO);
1608        set(SPUT_BOOLEAN_JUMBO);
1609        set(SPUT_BYTE_JUMBO);
1610        set(SPUT_CHAR_JUMBO);
1611        set(SPUT_SHORT_JUMBO);
1612        set(INVOKE_VIRTUAL_JUMBO);
1613        set(INVOKE_SUPER_JUMBO);
1614        set(INVOKE_DIRECT_JUMBO);
1615        set(INVOKE_STATIC_JUMBO);
1616        set(INVOKE_INTERFACE_JUMBO);
1617        // END(dops-init)
1618    }
1619
1620    /**
1621     * This class is uninstantiable.
1622     */
1623    private Dops() {
1624        // This space intentionally left blank.
1625    }
1626
1627    /**
1628     * Gets the {@link Dop} for the given opcode value.
1629     *
1630     * @param opcode {@code DalvOps.MIN_VALUE..DalvOps.MAX_VALUE;} the
1631     * opcode value
1632     * @return {@code non-null;} the associated opcode instance
1633     */
1634    public static Dop get(int opcode) {
1635        int idx = opcode - DalvOps.MIN_VALUE;
1636
1637        try {
1638            Dop result = DOPS[idx];
1639            if (result != null) {
1640                return result;
1641            }
1642        } catch (ArrayIndexOutOfBoundsException ex) {
1643            // Fall through.
1644        }
1645
1646        throw new IllegalArgumentException("bogus opcode");
1647    }
1648
1649    /**
1650     * Gets the next {@link Dop} in the instruction fitting chain after the
1651     * given instance, if any.
1652     *
1653     * @param opcode {@code non-null;} the opcode
1654     * @return {@code null-ok;} the next opcode in the same family, in the
1655     * chain of opcodes to try, or {@code null} if the given opcode is
1656     * the last in its chain
1657     */
1658    public static Dop getNextOrNull(Dop opcode) {
1659        int nextOpcode = opcode.getNextOpcode();
1660
1661        if (nextOpcode == DalvOps.NO_NEXT) {
1662            return null;
1663        }
1664
1665        return get(nextOpcode);
1666    }
1667
1668    /**
1669     * Puts the given opcode into the table of all ops.
1670     *
1671     * @param opcode {@code non-null;} the opcode
1672     */
1673    private static void set(Dop opcode) {
1674        int idx = opcode.getOpcode() - DalvOps.MIN_VALUE;
1675        DOPS[idx] = opcode;
1676    }
1677}
1678