1#![allow(non_camel_case_types)]
2
3#[repr(u8)]
4#[derive(Debug, PartialEq, Eq, Copy, Clone)]
5pub enum OpCode {
6 nop = 0,
8 aconst_null,
9 iconst_m1,
10 iconst_0,
11 iconst_1,
12 iconst_2,
13 iconst_3,
14 iconst_4,
15 iconst_5,
16 lconst_0,
17 lconst_1,
18 fconst_0,
19 fconst_1,
20 fconst_2,
21 dconst_0,
22 dconst_1,
23 bipush,
24 sipush,
25 ldc,
26 ldc_w,
27 ldc2_w,
28 iload,
30 lload,
31 fload,
32 dload,
33 aload,
34 iload_0,
35 iload_1,
36 iload_2,
37 iload_3,
38 lload_0,
39 lload_1,
40 lload_2,
41 lload_3,
42 fload_0,
43 fload_1,
44 fload_2,
45 fload_3,
46 dload_0,
47 dload_1,
48 dload_2,
49 dload_3,
50 aload_0,
51 aload_1,
52 aload_2,
53 aload_3,
54 iaload,
55 laload,
56 faload,
57 daload,
58 aaload,
59 baload,
60 caload,
61 saload,
62 istore,
64 lstore,
65 fstore,
66 dstore,
67 astore,
68 istore_0,
69 istore_1,
70 istore_2,
71 istore_3,
72 lstore_0,
73 lstore_1,
74 lstore_2,
75 lstore_3,
76 fstore_0,
77 fstore_1,
78 fstore_2,
79 fstore_3,
80 dstore_0,
81 dstore_1,
82 dstore_2,
83 dstore_3,
84 astore_0,
85 astore_1,
86 astore_2,
87 astore_3,
88 iastore,
89 lastore,
90 fastore,
91 dastore,
92 aastore,
93 bastore,
94 castore,
95 sastore,
96 pop,
98 pop2,
99 dup,
100 dup_x1,
101 dup_x2,
102 dup2,
103 dup2_x1,
104 dup2_x2,
105 swap,
106 iadd,
108 ladd,
109 fadd,
110 dadd,
111 isub,
112 lsub,
113 fsub,
114 dsub,
115 imul,
116 lmul,
117 fmul,
118 dmul,
119 idiv,
120 ldiv,
121 fdiv,
122 ddiv,
123 irem,
124 lrem,
125 frem, drem, ineg,
128 lneg,
129 fneg, dneg, ishl,
132 lshl,
133 ishr,
134 lshr,
135 iushr,
136 lushr,
137 iand,
138 land,
139 ior,
140 lor,
141 ixor,
142 lxor,
143 iinc,
144 i2l,
146 i2f,
147 i2d,
148 l2i,
149 l2f,
150 l2d,
151 f2i,
152 f2l,
153 f2d,
154 d2i,
155 d2l,
156 d2f,
157 i2b,
158 i2c,
159 i2s,
160 lcmp,
162 fcmpl,
163 fcmpg,
164 dcmpl,
165 dcmpg,
166 ifeq,
167 ifne,
168 iflt,
169 ifge,
170 ifgt,
171 ifle,
172 if_icmpeq,
173 if_icmpne,
174 if_icmplt,
175 if_icmpge,
176 if_icmpgt,
177 if_icmple,
178 if_acmpeq,
179 if_acmpne,
180 goto,
182 jsr, ret, tableswitch,
185 lookupswitch,
186 ireturn,
187 lreturn,
188 freturn,
189 dreturn,
190 areturn,
191 return_void,
192 getstatic,
194 putstatic,
195 getfield,
196 putfield,
197 invokevirtual,
198 invokespecial,
199 invokestatic,
200 invokeinterface,
201 invokedynamic,
202 new,
203 newarray,
204 anewarray,
205 arraylength,
206 athrow,
207 checkcast,
208 instanceof,
209 monitorenter,
210 monitorexit,
211 wide, multianewarray,
214 ifnull,
215 ifnonnull,
216 goto_w, jsr_w, breakpoint,
220 impdep1 = 0xfe,
221 impdep2 = 0xff,
222}
223
224lazy_static! {
225 static ref CODES: Vec<OpCode> = vec![
226 OpCode::nop,
227 OpCode::aconst_null,
228 OpCode::iconst_m1,
229 OpCode::iconst_0,
230 OpCode::iconst_1,
231 OpCode::iconst_2,
232 OpCode::iconst_3,
233 OpCode::iconst_4,
234 OpCode::iconst_5,
235 OpCode::lconst_0,
236 OpCode::lconst_1,
237 OpCode::fconst_0,
238 OpCode::fconst_1,
239 OpCode::fconst_2,
240 OpCode::dconst_0,
241 OpCode::dconst_1,
242 OpCode::bipush,
243 OpCode::sipush,
244 OpCode::ldc,
245 OpCode::ldc_w,
246 OpCode::ldc2_w,
247 OpCode::iload,
248 OpCode::lload,
249 OpCode::fload,
250 OpCode::dload,
251 OpCode::aload,
252 OpCode::iload_0,
253 OpCode::iload_1,
254 OpCode::iload_2,
255 OpCode::iload_3,
256 OpCode::lload_0,
257 OpCode::lload_1,
258 OpCode::lload_2,
259 OpCode::lload_3,
260 OpCode::fload_0,
261 OpCode::fload_1,
262 OpCode::fload_2,
263 OpCode::fload_3,
264 OpCode::dload_0,
265 OpCode::dload_1,
266 OpCode::dload_2,
267 OpCode::dload_3,
268 OpCode::aload_0,
269 OpCode::aload_1,
270 OpCode::aload_2,
271 OpCode::aload_3,
272 OpCode::iaload,
273 OpCode::laload,
274 OpCode::faload,
275 OpCode::daload,
276 OpCode::aaload,
277 OpCode::baload,
278 OpCode::caload,
279 OpCode::saload,
280 OpCode::istore,
281 OpCode::lstore,
282 OpCode::fstore,
283 OpCode::dstore,
284 OpCode::astore,
285 OpCode::istore_0,
286 OpCode::istore_1,
287 OpCode::istore_2,
288 OpCode::istore_3,
289 OpCode::lstore_0,
290 OpCode::lstore_1,
291 OpCode::lstore_2,
292 OpCode::lstore_3,
293 OpCode::fstore_0,
294 OpCode::fstore_1,
295 OpCode::fstore_2,
296 OpCode::fstore_3,
297 OpCode::dstore_0,
298 OpCode::dstore_1,
299 OpCode::dstore_2,
300 OpCode::dstore_3,
301 OpCode::astore_0,
302 OpCode::astore_1,
303 OpCode::astore_2,
304 OpCode::astore_3,
305 OpCode::iastore,
306 OpCode::lastore,
307 OpCode::fastore,
308 OpCode::dastore,
309 OpCode::aastore,
310 OpCode::bastore,
311 OpCode::castore,
312 OpCode::sastore,
313 OpCode::pop,
314 OpCode::pop2,
315 OpCode::dup,
316 OpCode::dup_x1,
317 OpCode::dup_x2,
318 OpCode::dup2,
319 OpCode::dup2_x1,
320 OpCode::dup2_x2,
321 OpCode::swap,
322 OpCode::iadd,
323 OpCode::ladd,
324 OpCode::fadd,
325 OpCode::dadd,
326 OpCode::isub,
327 OpCode::lsub,
328 OpCode::fsub,
329 OpCode::dsub,
330 OpCode::imul,
331 OpCode::lmul,
332 OpCode::fmul,
333 OpCode::dmul,
334 OpCode::idiv,
335 OpCode::ldiv,
336 OpCode::fdiv,
337 OpCode::ddiv,
338 OpCode::irem,
339 OpCode::lrem,
340 OpCode::frem,
341 OpCode::drem,
342 OpCode::ineg,
343 OpCode::lneg,
344 OpCode::fneg,
345 OpCode::dneg,
346 OpCode::ishl,
347 OpCode::lshl,
348 OpCode::ishr,
349 OpCode::lshr,
350 OpCode::iushr,
351 OpCode::lushr,
352 OpCode::iand,
353 OpCode::land,
354 OpCode::ior,
355 OpCode::lor,
356 OpCode::ixor,
357 OpCode::lxor,
358 OpCode::iinc,
359 OpCode::i2l,
360 OpCode::i2f,
361 OpCode::i2d,
362 OpCode::l2i,
363 OpCode::l2f,
364 OpCode::l2d,
365 OpCode::f2i,
366 OpCode::f2l,
367 OpCode::f2d,
368 OpCode::d2i,
369 OpCode::d2l,
370 OpCode::d2f,
371 OpCode::i2b,
372 OpCode::i2c,
373 OpCode::i2s,
374 OpCode::lcmp,
375 OpCode::fcmpl,
376 OpCode::fcmpg,
377 OpCode::dcmpl,
378 OpCode::dcmpg,
379 OpCode::ifeq,
380 OpCode::ifne,
381 OpCode::iflt,
382 OpCode::ifge,
383 OpCode::ifgt,
384 OpCode::ifle,
385 OpCode::if_icmpeq,
386 OpCode::if_icmpne,
387 OpCode::if_icmplt,
388 OpCode::if_icmpge,
389 OpCode::if_icmpgt,
390 OpCode::if_icmple,
391 OpCode::if_acmpeq,
392 OpCode::if_acmpne,
393 OpCode::goto,
394 OpCode::jsr,
395 OpCode::ret,
396 OpCode::tableswitch,
397 OpCode::lookupswitch,
398 OpCode::ireturn,
399 OpCode::lreturn,
400 OpCode::freturn,
401 OpCode::dreturn,
402 OpCode::areturn,
403 OpCode::return_void,
404 OpCode::getstatic,
405 OpCode::putstatic,
406 OpCode::getfield,
407 OpCode::putfield,
408 OpCode::invokevirtual,
409 OpCode::invokespecial,
410 OpCode::invokestatic,
411 OpCode::invokeinterface,
412 OpCode::invokedynamic,
413 OpCode::new,
414 OpCode::newarray,
415 OpCode::anewarray,
416 OpCode::arraylength,
417 OpCode::athrow,
418 OpCode::checkcast,
419 OpCode::instanceof,
420 OpCode::monitorenter,
421 OpCode::monitorexit,
422 OpCode::wide,
423 OpCode::multianewarray,
424 OpCode::ifnull,
425 OpCode::ifnonnull,
426 OpCode::goto_w,
427 OpCode::jsr_w,
428 OpCode::breakpoint,
429 ];
430}
431
432impl From<u8> for OpCode {
433 #[inline]
434 fn from(v: u8) -> Self {
435 match CODES.get(v as usize) {
436 Some(op) => *op,
437 None => match v {
438 254 => OpCode::impdep1,
439 255 => OpCode::impdep2,
440 _ => unreachable!(),
441 },
442 }
443 }
444}
445
446impl Into<&'static str> for OpCode {
447 fn into(self) -> &'static str {
448 match self {
449 OpCode::nop => "nop",
450 OpCode::aconst_null => "aconst_null",
451 OpCode::iconst_m1 => "iconst_m1",
452 OpCode::iconst_0 => "iconst_0",
453 OpCode::iconst_1 => "iconst_1",
454 OpCode::iconst_2 => "iconst_2",
455 OpCode::iconst_3 => "iconst_3",
456 OpCode::iconst_4 => "iconst_4",
457 OpCode::iconst_5 => "iconst_5",
458 OpCode::lconst_0 => "lconst_0",
459 OpCode::lconst_1 => "lconst_1",
460 OpCode::fconst_0 => "fconst_0",
461 OpCode::fconst_1 => "fconst_1",
462 OpCode::fconst_2 => "fconst_2",
463 OpCode::dconst_0 => "dconst_0",
464 OpCode::dconst_1 => "dconst_1",
465 OpCode::bipush => "bipush",
466 OpCode::sipush => "sipush",
467 OpCode::ldc => "ldc",
468 OpCode::ldc_w => "ldc_w",
469 OpCode::ldc2_w => "ldc2_w",
470 OpCode::iload => "iload",
471 OpCode::lload => "lload",
472 OpCode::fload => "fload",
473 OpCode::dload => "dload",
474 OpCode::aload => "aload",
475 OpCode::iload_0 => "iload_0",
476 OpCode::iload_1 => "iload_1",
477 OpCode::iload_2 => "iload_2",
478 OpCode::iload_3 => "iload_3",
479 OpCode::lload_0 => "lload_0",
480 OpCode::lload_1 => "lload_1",
481 OpCode::lload_2 => "lload_2",
482 OpCode::lload_3 => "lload_3",
483 OpCode::fload_0 => "fload_0",
484 OpCode::fload_1 => "fload_1",
485 OpCode::fload_2 => "fload_2",
486 OpCode::fload_3 => "fload_3",
487 OpCode::dload_0 => "dload_0",
488 OpCode::dload_1 => "dload_1",
489 OpCode::dload_2 => "dload_2",
490 OpCode::dload_3 => "dload_3",
491 OpCode::aload_0 => "aload_0",
492 OpCode::aload_1 => "aload_1",
493 OpCode::aload_2 => "aload_2",
494 OpCode::aload_3 => "aload_3",
495 OpCode::iaload => "iaload",
496 OpCode::laload => "laload",
497 OpCode::faload => "faload",
498 OpCode::daload => "daload",
499 OpCode::aaload => "aaload",
500 OpCode::baload => "baload",
501 OpCode::caload => "caload",
502 OpCode::saload => "saload",
503 OpCode::istore => "istore",
504 OpCode::lstore => "lstore",
505 OpCode::fstore => "fstore",
506 OpCode::dstore => "dstore",
507 OpCode::astore => "astore",
508 OpCode::istore_0 => "istore_0",
509 OpCode::istore_1 => "istore_1",
510 OpCode::istore_2 => "istore_2",
511 OpCode::istore_3 => "istore_3",
512 OpCode::lstore_0 => "lstore_0",
513 OpCode::lstore_1 => "lstore_1",
514 OpCode::lstore_2 => "lstore_2",
515 OpCode::lstore_3 => "lstore_3",
516 OpCode::fstore_0 => "fstore_0",
517 OpCode::fstore_1 => "fstore_1",
518 OpCode::fstore_2 => "fstore_2",
519 OpCode::fstore_3 => "fstore_3",
520 OpCode::dstore_0 => "dstore_0",
521 OpCode::dstore_1 => "dstore_1",
522 OpCode::dstore_2 => "dstore_2",
523 OpCode::dstore_3 => "dstore_3",
524 OpCode::astore_0 => "astore_0",
525 OpCode::astore_1 => "astore_1",
526 OpCode::astore_2 => "astore_2",
527 OpCode::astore_3 => "astore_3",
528 OpCode::iastore => "iastore",
529 OpCode::lastore => "lastore",
530 OpCode::fastore => "fastore",
531 OpCode::dastore => "dastore",
532 OpCode::aastore => "aastore",
533 OpCode::bastore => "bastore",
534 OpCode::castore => "castore",
535 OpCode::sastore => "sastore",
536 OpCode::pop => "pop",
537 OpCode::pop2 => "pop2",
538 OpCode::dup => "dup",
539 OpCode::dup_x1 => "dup_x1",
540 OpCode::dup_x2 => "dup_x2",
541 OpCode::dup2 => "dup2",
542 OpCode::dup2_x1 => "dup2_x1",
543 OpCode::dup2_x2 => "dup2_x2",
544 OpCode::swap => "swap",
545 OpCode::iadd => "iadd",
546 OpCode::ladd => "ladd",
547 OpCode::fadd => "fadd",
548 OpCode::dadd => "dadd",
549 OpCode::isub => "isub",
550 OpCode::lsub => "lsub",
551 OpCode::fsub => "fsub",
552 OpCode::dsub => "dsub",
553 OpCode::imul => "imul",
554 OpCode::lmul => "lmul",
555 OpCode::fmul => "fmul",
556 OpCode::dmul => "dmul",
557 OpCode::idiv => "idiv",
558 OpCode::ldiv => "ldiv",
559 OpCode::fdiv => "fdiv",
560 OpCode::ddiv => "ddiv",
561 OpCode::irem => "irem",
562 OpCode::lrem => "lrem",
563 OpCode::frem => "frem",
564 OpCode::drem => "drem",
565 OpCode::ineg => "ineg",
566 OpCode::lneg => "lneg",
567 OpCode::fneg => "fneg",
568 OpCode::dneg => "dneg",
569 OpCode::ishl => "ishl",
570 OpCode::lshl => "lshl",
571 OpCode::ishr => "ishr",
572 OpCode::lshr => "lshr",
573 OpCode::iushr => "iushr",
574 OpCode::lushr => "lushr",
575 OpCode::iand => "iand",
576 OpCode::land => "land",
577 OpCode::ior => "ior",
578 OpCode::lor => "lor",
579 OpCode::ixor => "ixor",
580 OpCode::lxor => "lxor",
581 OpCode::iinc => "iinc",
582 OpCode::i2l => "i2l",
583 OpCode::i2f => "i2f",
584 OpCode::i2d => "i2d",
585 OpCode::l2i => "l2i",
586 OpCode::l2f => "l2f",
587 OpCode::l2d => "l2d",
588 OpCode::f2i => "f2i",
589 OpCode::f2l => "f2l",
590 OpCode::f2d => "f2d",
591 OpCode::d2i => "d2i",
592 OpCode::d2l => "d2l",
593 OpCode::d2f => "d2f",
594 OpCode::i2b => "i2b",
595 OpCode::i2c => "i2c",
596 OpCode::i2s => "i2s",
597 OpCode::lcmp => "lcmp",
598 OpCode::fcmpl => "fcmpl",
599 OpCode::fcmpg => "fcmpg",
600 OpCode::dcmpl => "dcmpl",
601 OpCode::dcmpg => "dcmpg",
602 OpCode::ifeq => "ifeq",
603 OpCode::ifne => "ifne",
604 OpCode::iflt => "iflt",
605 OpCode::ifge => "ifge",
606 OpCode::ifgt => "ifgt",
607 OpCode::ifle => "ifle",
608 OpCode::if_icmpeq => "if_icmpeq",
609 OpCode::if_icmpne => "if_icmpne",
610 OpCode::if_icmplt => "if_icmplt",
611 OpCode::if_icmpge => "if_icmpge",
612 OpCode::if_icmpgt => "if_icmpgt",
613 OpCode::if_icmple => "if_icmple",
614 OpCode::if_acmpeq => "if_acmpeq",
615 OpCode::if_acmpne => "if_acmpne",
616 OpCode::goto => "goto",
617 OpCode::jsr => "jsr",
618 OpCode::ret => "ret",
619 OpCode::tableswitch => "tableswitch",
620 OpCode::lookupswitch => "lookupswitch",
621 OpCode::ireturn => "ireturn",
622 OpCode::lreturn => "lreturn",
623 OpCode::freturn => "freturn",
624 OpCode::dreturn => "dreturn",
625 OpCode::areturn => "areturn",
626 OpCode::return_void => "return",
627 OpCode::getstatic => "getstatic",
628 OpCode::putstatic => "putstatic",
629 OpCode::getfield => "getfield",
630 OpCode::putfield => "putfield",
631 OpCode::invokevirtual => "invokevirtual",
632 OpCode::invokespecial => "invokespecial",
633 OpCode::invokestatic => "invokestatic",
634 OpCode::invokeinterface => "invokeinterface",
635 OpCode::invokedynamic => "invokedynamic",
636 OpCode::new => "new",
637 OpCode::newarray => "newarray",
638 OpCode::anewarray => "anewarray",
639 OpCode::arraylength => "arraylength",
640 OpCode::athrow => "athrow",
641 OpCode::checkcast => "checkcast",
642 OpCode::instanceof => "instanceof",
643 OpCode::monitorenter => "monitorenter",
644 OpCode::monitorexit => "monitorexit",
645 OpCode::wide => "wide",
646 OpCode::multianewarray => "multianewarray",
647 OpCode::ifnull => "ifnull",
648 OpCode::ifnonnull => "ifnonnull",
649 OpCode::goto_w => "goto_w",
650 OpCode::jsr_w => "jsr_w",
651 OpCode::breakpoint => unreachable!(),
652 OpCode::impdep1 => unreachable!(),
653 OpCode::impdep2 => unreachable!(),
654 }
655 }
656}
657
658#[cfg(test)]
659mod tests {
660 use super::OpCode;
661
662 #[test]
663 fn t_opcode() {
664 assert_eq!(OpCode::nop, OpCode::from(0));
665 assert_eq!(OpCode::aconst_null, OpCode::from(1));
666 assert_eq!(OpCode::iconst_m1, OpCode::from(2));
667 assert_eq!(OpCode::iconst_0, OpCode::from(3));
668 assert_eq!(OpCode::iconst_1, OpCode::from(4));
669 assert_eq!(OpCode::iconst_2, OpCode::from(5));
670 assert_eq!(OpCode::iconst_3, OpCode::from(6));
671 assert_eq!(OpCode::iconst_4, OpCode::from(7));
672 assert_eq!(OpCode::iconst_5, OpCode::from(8));
673 assert_eq!(OpCode::lconst_0, OpCode::from(9));
674 assert_eq!(OpCode::lconst_1, OpCode::from(10));
675 assert_eq!(OpCode::fconst_0, OpCode::from(11));
676 assert_eq!(OpCode::fconst_1, OpCode::from(12));
677 assert_eq!(OpCode::fconst_2, OpCode::from(13));
678 assert_eq!(OpCode::dconst_0, OpCode::from(14));
679 assert_eq!(OpCode::dconst_1, OpCode::from(15));
680 assert_eq!(OpCode::bipush, OpCode::from(16));
681 assert_eq!(OpCode::sipush, OpCode::from(17));
682 assert_eq!(OpCode::ldc, OpCode::from(18));
683 assert_eq!(OpCode::ldc_w, OpCode::from(19));
684 assert_eq!(OpCode::ldc2_w, OpCode::from(20));
685 assert_eq!(OpCode::iload, OpCode::from(21));
686 assert_eq!(OpCode::lload, OpCode::from(22));
687 assert_eq!(OpCode::fload, OpCode::from(23));
688 assert_eq!(OpCode::dload, OpCode::from(24));
689 assert_eq!(OpCode::aload, OpCode::from(25));
690 assert_eq!(OpCode::iload_0, OpCode::from(26));
691 assert_eq!(OpCode::iload_1, OpCode::from(27));
692 assert_eq!(OpCode::iload_2, OpCode::from(28));
693 assert_eq!(OpCode::iload_3, OpCode::from(29));
694 assert_eq!(OpCode::lload_0, OpCode::from(30));
695 assert_eq!(OpCode::lload_1, OpCode::from(31));
696 assert_eq!(OpCode::lload_2, OpCode::from(32));
697 assert_eq!(OpCode::lload_3, OpCode::from(33));
698 assert_eq!(OpCode::fload_0, OpCode::from(34));
699 assert_eq!(OpCode::fload_1, OpCode::from(35));
700 assert_eq!(OpCode::fload_2, OpCode::from(36));
701 assert_eq!(OpCode::fload_3, OpCode::from(37));
702 assert_eq!(OpCode::dload_0, OpCode::from(38));
703 assert_eq!(OpCode::dload_1, OpCode::from(39));
704 assert_eq!(OpCode::dload_2, OpCode::from(40));
705 assert_eq!(OpCode::dload_3, OpCode::from(41));
706 assert_eq!(OpCode::aload_0, OpCode::from(42));
707 assert_eq!(OpCode::aload_1, OpCode::from(43));
708 assert_eq!(OpCode::aload_2, OpCode::from(44));
709 assert_eq!(OpCode::aload_3, OpCode::from(45));
710 assert_eq!(OpCode::iaload, OpCode::from(46));
711 assert_eq!(OpCode::laload, OpCode::from(47));
712 assert_eq!(OpCode::faload, OpCode::from(48));
713 assert_eq!(OpCode::daload, OpCode::from(49));
714 assert_eq!(OpCode::aaload, OpCode::from(50));
715 assert_eq!(OpCode::baload, OpCode::from(51));
716 assert_eq!(OpCode::caload, OpCode::from(52));
717 assert_eq!(OpCode::saload, OpCode::from(53));
718 assert_eq!(OpCode::istore, OpCode::from(54));
719 assert_eq!(OpCode::lstore, OpCode::from(55));
720 assert_eq!(OpCode::fstore, OpCode::from(56));
721 assert_eq!(OpCode::dstore, OpCode::from(57));
722 assert_eq!(OpCode::astore, OpCode::from(58));
723 assert_eq!(OpCode::istore_0, OpCode::from(59));
724 assert_eq!(OpCode::istore_1, OpCode::from(60));
725 assert_eq!(OpCode::istore_2, OpCode::from(61));
726 assert_eq!(OpCode::istore_3, OpCode::from(62));
727 assert_eq!(OpCode::lstore_0, OpCode::from(63));
728 assert_eq!(OpCode::lstore_1, OpCode::from(64));
729 assert_eq!(OpCode::lstore_2, OpCode::from(65));
730 assert_eq!(OpCode::lstore_3, OpCode::from(66));
731 assert_eq!(OpCode::fstore_0, OpCode::from(67));
732 assert_eq!(OpCode::fstore_1, OpCode::from(68));
733 assert_eq!(OpCode::fstore_2, OpCode::from(69));
734 assert_eq!(OpCode::fstore_3, OpCode::from(70));
735 assert_eq!(OpCode::dstore_0, OpCode::from(71));
736 assert_eq!(OpCode::dstore_1, OpCode::from(72));
737 assert_eq!(OpCode::dstore_2, OpCode::from(73));
738 assert_eq!(OpCode::dstore_3, OpCode::from(74));
739 assert_eq!(OpCode::astore_0, OpCode::from(75));
740 assert_eq!(OpCode::astore_1, OpCode::from(76));
741 assert_eq!(OpCode::astore_2, OpCode::from(77));
742 assert_eq!(OpCode::astore_3, OpCode::from(78));
743 assert_eq!(OpCode::iastore, OpCode::from(79));
744 assert_eq!(OpCode::lastore, OpCode::from(80));
745 assert_eq!(OpCode::fastore, OpCode::from(81));
746 assert_eq!(OpCode::dastore, OpCode::from(82));
747 assert_eq!(OpCode::aastore, OpCode::from(83));
748 assert_eq!(OpCode::bastore, OpCode::from(84));
749 assert_eq!(OpCode::castore, OpCode::from(85));
750 assert_eq!(OpCode::sastore, OpCode::from(86));
751 assert_eq!(OpCode::pop, OpCode::from(87));
752 assert_eq!(OpCode::pop2, OpCode::from(88));
753 assert_eq!(OpCode::dup, OpCode::from(89));
754 assert_eq!(OpCode::dup_x1, OpCode::from(90));
755 assert_eq!(OpCode::dup_x2, OpCode::from(91));
756 assert_eq!(OpCode::dup2, OpCode::from(92));
757 assert_eq!(OpCode::dup2_x1, OpCode::from(93));
758 assert_eq!(OpCode::dup2_x2, OpCode::from(94));
759 assert_eq!(OpCode::swap, OpCode::from(95));
760 assert_eq!(OpCode::iadd, OpCode::from(96));
761 assert_eq!(OpCode::ladd, OpCode::from(97));
762 assert_eq!(OpCode::fadd, OpCode::from(98));
763 assert_eq!(OpCode::dadd, OpCode::from(99));
764 assert_eq!(OpCode::isub, OpCode::from(100));
765 assert_eq!(OpCode::lsub, OpCode::from(101));
766 assert_eq!(OpCode::fsub, OpCode::from(102));
767 assert_eq!(OpCode::dsub, OpCode::from(103));
768 assert_eq!(OpCode::imul, OpCode::from(104));
769 assert_eq!(OpCode::lmul, OpCode::from(105));
770 assert_eq!(OpCode::fmul, OpCode::from(106));
771 assert_eq!(OpCode::dmul, OpCode::from(107));
772 assert_eq!(OpCode::idiv, OpCode::from(108));
773 assert_eq!(OpCode::ldiv, OpCode::from(109));
774 assert_eq!(OpCode::fdiv, OpCode::from(110));
775 assert_eq!(OpCode::ddiv, OpCode::from(111));
776 assert_eq!(OpCode::irem, OpCode::from(112));
777 assert_eq!(OpCode::lrem, OpCode::from(113));
778 assert_eq!(OpCode::frem, OpCode::from(114));
779 assert_eq!(OpCode::drem, OpCode::from(115));
780 assert_eq!(OpCode::ineg, OpCode::from(116));
781 assert_eq!(OpCode::lneg, OpCode::from(117));
782 assert_eq!(OpCode::fneg, OpCode::from(118));
783 assert_eq!(OpCode::dneg, OpCode::from(119));
784 assert_eq!(OpCode::ishl, OpCode::from(120));
785 assert_eq!(OpCode::lshl, OpCode::from(121));
786 assert_eq!(OpCode::ishr, OpCode::from(122));
787 assert_eq!(OpCode::lshr, OpCode::from(123));
788 assert_eq!(OpCode::iushr, OpCode::from(124));
789 assert_eq!(OpCode::lushr, OpCode::from(125));
790 assert_eq!(OpCode::iand, OpCode::from(126));
791 assert_eq!(OpCode::land, OpCode::from(127));
792 assert_eq!(OpCode::ior, OpCode::from(128));
793 assert_eq!(OpCode::lor, OpCode::from(129));
794 assert_eq!(OpCode::ixor, OpCode::from(130));
795 assert_eq!(OpCode::lxor, OpCode::from(131));
796 assert_eq!(OpCode::iinc, OpCode::from(132));
797 assert_eq!(OpCode::i2l, OpCode::from(133));
798 assert_eq!(OpCode::i2f, OpCode::from(134));
799 assert_eq!(OpCode::i2d, OpCode::from(135));
800 assert_eq!(OpCode::l2i, OpCode::from(136));
801 assert_eq!(OpCode::l2f, OpCode::from(137));
802 assert_eq!(OpCode::l2d, OpCode::from(138));
803 assert_eq!(OpCode::f2i, OpCode::from(139));
804 assert_eq!(OpCode::f2l, OpCode::from(140));
805 assert_eq!(OpCode::f2d, OpCode::from(141));
806 assert_eq!(OpCode::d2i, OpCode::from(142));
807 assert_eq!(OpCode::d2l, OpCode::from(143));
808 assert_eq!(OpCode::d2f, OpCode::from(144));
809 assert_eq!(OpCode::i2b, OpCode::from(145));
810 assert_eq!(OpCode::i2c, OpCode::from(146));
811 assert_eq!(OpCode::i2s, OpCode::from(147));
812 assert_eq!(OpCode::lcmp, OpCode::from(148));
813 assert_eq!(OpCode::fcmpl, OpCode::from(149));
814 assert_eq!(OpCode::fcmpg, OpCode::from(150));
815 assert_eq!(OpCode::dcmpl, OpCode::from(151));
816 assert_eq!(OpCode::dcmpg, OpCode::from(152));
817 assert_eq!(OpCode::ifeq, OpCode::from(153));
818 assert_eq!(OpCode::ifne, OpCode::from(154));
819 assert_eq!(OpCode::iflt, OpCode::from(155));
820 assert_eq!(OpCode::ifge, OpCode::from(156));
821 assert_eq!(OpCode::ifgt, OpCode::from(157));
822 assert_eq!(OpCode::ifle, OpCode::from(158));
823 assert_eq!(OpCode::if_icmpeq, OpCode::from(159));
824 assert_eq!(OpCode::if_icmpne, OpCode::from(160));
825 assert_eq!(OpCode::if_icmplt, OpCode::from(161));
826 assert_eq!(OpCode::if_icmpge, OpCode::from(162));
827 assert_eq!(OpCode::if_icmpgt, OpCode::from(163));
828 assert_eq!(OpCode::if_icmple, OpCode::from(164));
829 assert_eq!(OpCode::if_acmpeq, OpCode::from(165));
830 assert_eq!(OpCode::if_acmpne, OpCode::from(166));
831 assert_eq!(OpCode::goto, OpCode::from(167));
832 assert_eq!(OpCode::jsr, OpCode::from(168));
833 assert_eq!(OpCode::ret, OpCode::from(169));
834 assert_eq!(OpCode::tableswitch, OpCode::from(170));
835 assert_eq!(OpCode::lookupswitch, OpCode::from(171));
836 assert_eq!(OpCode::ireturn, OpCode::from(172));
837 assert_eq!(OpCode::lreturn, OpCode::from(173));
838 assert_eq!(OpCode::freturn, OpCode::from(174));
839 assert_eq!(OpCode::dreturn, OpCode::from(175));
840 assert_eq!(OpCode::areturn, OpCode::from(176));
841 assert_eq!(OpCode::return_void, OpCode::from(177));
842 assert_eq!(OpCode::getstatic, OpCode::from(178));
843 assert_eq!(OpCode::putstatic, OpCode::from(179));
844 assert_eq!(OpCode::getfield, OpCode::from(180));
845 assert_eq!(OpCode::putfield, OpCode::from(181));
846 assert_eq!(OpCode::invokevirtual, OpCode::from(182));
847 assert_eq!(OpCode::invokespecial, OpCode::from(183));
848 assert_eq!(OpCode::invokestatic, OpCode::from(184));
849 assert_eq!(OpCode::invokeinterface, OpCode::from(185));
850 assert_eq!(OpCode::invokedynamic, OpCode::from(186));
851 assert_eq!(OpCode::new, OpCode::from(187));
852 assert_eq!(OpCode::newarray, OpCode::from(188));
853 assert_eq!(OpCode::anewarray, OpCode::from(189));
854 assert_eq!(OpCode::arraylength, OpCode::from(190));
855 assert_eq!(OpCode::athrow, OpCode::from(191));
856 assert_eq!(OpCode::checkcast, OpCode::from(192));
857 assert_eq!(OpCode::instanceof, OpCode::from(193));
858 assert_eq!(OpCode::monitorenter, OpCode::from(194));
859 assert_eq!(OpCode::monitorexit, OpCode::from(195));
860 assert_eq!(OpCode::wide, OpCode::from(196));
861 assert_eq!(OpCode::multianewarray, OpCode::from(197));
862 assert_eq!(OpCode::ifnull, OpCode::from(198));
863 assert_eq!(OpCode::ifnonnull, OpCode::from(199));
864 assert_eq!(OpCode::goto_w, OpCode::from(200));
865 assert_eq!(OpCode::jsr_w, OpCode::from(201));
866 assert_eq!(OpCode::breakpoint, OpCode::from(202));
867 assert_eq!(OpCode::impdep1, OpCode::from(254));
919 assert_eq!(OpCode::impdep2, OpCode::from(255));
920 }
922}