3 GENERATED case ICMD_NOP:
8 GENERATED case ICMD_ACONST:
10 GENERATED maythrow = true;
11 GENERATED CHECK_STACK_SPACE(1);
13 # define DST (&(stack[1]))
14 GENERATED /* may use stack[1] ... stack[1] */
17 # line 347 "src/vm/jit/verify/icmds.c"
18 GENERATED if (IPTR->flags.bits & INS_FLAG_CLASS) {
19 GENERATED /* a java.lang.Class reference */
20 GENERATED TYPEINFO_INIT_JAVA_LANG_CLASS(DST->typeinfo,IPTR->sx.val.c);
23 GENERATED if (IPTR->sx.val.anyptr == NULL)
24 GENERATED TYPEINFO_INIT_NULLTYPE(DST->typeinfo);
26 GENERATED /* string constant (or constant for builtin function) */
27 GENERATED typeinfo_init_classinfo(&(DST->typeinfo),class_java_lang_String);
31 # line 32 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
34 GENERATED stack[0].type = TYPE_ADR;
41 GENERATED case ICMD_CHECKNULL:
42 GENERATED /* (A--A) */
43 GENERATED maythrow = true;
44 GENERATED CHECK_STACK_DEPTH(1);
45 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
49 GENERATED case ICMD_ICONST:
51 GENERATED CHECK_STACK_SPACE(1);
53 GENERATED stack[0].type = TYPE_INT;
57 GENERATED case ICMD_LCONST:
59 GENERATED CHECK_STACK_SPACE(2);
61 GENERATED stack[0].type = TYPE_VOID;
62 GENERATED stack[-1].type = TYPE_LNG;
66 GENERATED case ICMD_FCONST:
68 GENERATED CHECK_STACK_SPACE(1);
70 GENERATED stack[0].type = TYPE_FLT;
74 GENERATED case ICMD_DCONST:
76 GENERATED CHECK_STACK_SPACE(2);
78 GENERATED stack[0].type = TYPE_VOID;
79 GENERATED stack[-1].type = TYPE_DBL;
83 GENERATED case ICMD_ILOAD:
85 GENERATED CHECK_STACK_SPACE(1);
86 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_INT);
88 GENERATED stack[0].type = TYPE_INT;
92 GENERATED case ICMD_LLOAD:
94 GENERATED CHECK_STACK_SPACE(2);
95 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_LNG);
97 GENERATED stack[0].type = TYPE_VOID;
98 GENERATED stack[-1].type = TYPE_LNG;
102 GENERATED case ICMD_FLOAD:
103 GENERATED /* (--F) */
104 GENERATED CHECK_STACK_SPACE(1);
105 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_FLT);
106 GENERATED stack += 1;
107 GENERATED stack[0].type = TYPE_FLT;
111 GENERATED case ICMD_DLOAD:
112 GENERATED /* (--D) */
113 GENERATED CHECK_STACK_SPACE(2);
114 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_DBL);
115 GENERATED stack += 2;
116 GENERATED stack[0].type = TYPE_VOID;
117 GENERATED stack[-1].type = TYPE_DBL;
121 GENERATED case ICMD_ALOAD:
122 GENERATED /* (--A) */
123 GENERATED CHECK_STACK_SPACE(1);
124 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_ADR);
126 # define OP1 LOCAL_SLOT(IPTR->s1.varindex)
128 # define DST (&(stack[1]))
129 GENERATED /* may use stack[1] ... stack[1] */
132 # line 91 "src/vm/jit/verify/icmds.c"
133 GENERATED TYPECHECK_COUNT(stat_ins_aload);
136 # if !defined(TYPECHECK_TYPEINFERER)
137 GENERATED /* loading a returnAddress is not allowed */
138 GENERATED if (!TYPEDESC_IS_REFERENCE(*OP1)) {
139 GENERATED VERIFY_ERROR("illegal instruction: ALOAD loading non-reference");
143 GENERATED TYPEINFO_COPY(OP1->typeinfo,DST->typeinfo);
145 # line 146 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
147 GENERATED stack += 1;
148 GENERATED stack[0].type = TYPE_ADR;
157 GENERATED case ICMD_IALOAD:
158 GENERATED /* (AI--I) */
159 GENERATED maythrow = true;
160 GENERATED CHECK_STACK_DEPTH(2);
161 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
162 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
164 # define OP1 (&(stack[-1]))
166 # define OP2 (&(stack[0]))
168 # define DST (&(stack[-1]))
169 GENERATED /* may use stack[-1] ... stack[0] */
172 # line 258 "src/vm/jit/verify/icmds.c"
173 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT))
174 GENERATED VERIFY_ERROR("Array type mismatch");
176 # line 177 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
178 GENERATED stack += -1;
179 GENERATED stack[0].type = TYPE_INT;
190 GENERATED case ICMD_LALOAD:
191 GENERATED /* (AI--L) */
192 GENERATED maythrow = true;
193 GENERATED CHECK_STACK_DEPTH(2);
194 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
195 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
197 # define OP1 (&(stack[-1]))
199 # define OP2 (&(stack[0]))
201 # define DST (&(stack[-1]))
202 GENERATED /* may use stack[-1] ... stack[0] */
205 # line 268 "src/vm/jit/verify/icmds.c"
206 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG))
207 GENERATED VERIFY_ERROR("Array type mismatch");
209 # line 210 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
211 GENERATED stack[0].type = TYPE_VOID;
212 GENERATED stack[-1].type = TYPE_LNG;
223 GENERATED case ICMD_FALOAD:
224 GENERATED /* (AI--F) */
225 GENERATED maythrow = true;
226 GENERATED CHECK_STACK_DEPTH(2);
227 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
228 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
230 # define OP1 (&(stack[-1]))
232 # define OP2 (&(stack[0]))
234 # define DST (&(stack[-1]))
235 GENERATED /* may use stack[-1] ... stack[0] */
238 # line 253 "src/vm/jit/verify/icmds.c"
239 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT))
240 GENERATED VERIFY_ERROR("Array type mismatch");
242 # line 243 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
244 GENERATED stack += -1;
245 GENERATED stack[0].type = TYPE_FLT;
256 GENERATED case ICMD_DALOAD:
257 GENERATED /* (AI--D) */
258 GENERATED maythrow = true;
259 GENERATED CHECK_STACK_DEPTH(2);
260 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
261 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
263 # define OP1 (&(stack[-1]))
265 # define OP2 (&(stack[0]))
267 # define DST (&(stack[-1]))
268 GENERATED /* may use stack[-1] ... stack[0] */
271 # line 248 "src/vm/jit/verify/icmds.c"
272 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE))
273 GENERATED VERIFY_ERROR("Array type mismatch");
275 # line 276 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
277 GENERATED stack[0].type = TYPE_VOID;
278 GENERATED stack[-1].type = TYPE_DBL;
289 GENERATED case ICMD_AALOAD:
290 GENERATED /* (AI--A) */
291 GENERATED maythrow = true;
292 GENERATED CHECK_STACK_DEPTH(2);
293 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
294 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
296 # define OP1 (&(stack[-1]))
298 # define OP2 (&(stack[0]))
300 # define DST (&(stack[-1]))
301 GENERATED /* may use stack[-1] ... stack[0] */
304 # line 113 "src/vm/jit/verify/icmds.c"
306 # if !defined(TYPECHECK_TYPEINFERER)
307 GENERATED if (!TYPEINFO_MAYBE_ARRAY_OF_REFS(OP1->typeinfo))
308 GENERATED VERIFY_ERROR("illegal instruction: AALOAD on non-reference array");
312 GENERATED if (!typeinfo_init_component(&OP1->typeinfo,&DST->typeinfo))
315 # line 316 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
317 GENERATED stack += -1;
328 GENERATED case ICMD_BALOAD:
329 GENERATED /* (AI--I) */
330 GENERATED maythrow = true;
331 GENERATED CHECK_STACK_DEPTH(2);
332 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
333 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
335 # define OP1 (&(stack[-1]))
337 # define OP2 (&(stack[0]))
339 # define DST (&(stack[-1]))
340 GENERATED /* may use stack[-1] ... stack[0] */
343 # line 237 "src/vm/jit/verify/icmds.c"
344 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BOOLEAN)
345 GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE))
346 GENERATED VERIFY_ERROR("Array type mismatch");
348 # line 349 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
350 GENERATED stack += -1;
351 GENERATED stack[0].type = TYPE_INT;
362 GENERATED case ICMD_CALOAD:
363 GENERATED /* (AI--I) */
364 GENERATED maythrow = true;
365 GENERATED CHECK_STACK_DEPTH(2);
366 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
367 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
369 # define OP1 (&(stack[-1]))
371 # define OP2 (&(stack[0]))
373 # define DST (&(stack[-1]))
374 GENERATED /* may use stack[-1] ... stack[0] */
377 # line 243 "src/vm/jit/verify/icmds.c"
378 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR))
379 GENERATED VERIFY_ERROR("Array type mismatch");
381 # line 382 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
383 GENERATED stack += -1;
384 GENERATED stack[0].type = TYPE_INT;
395 GENERATED case ICMD_SALOAD:
396 GENERATED /* (AI--I) */
397 GENERATED maythrow = true;
398 GENERATED CHECK_STACK_DEPTH(2);
399 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
400 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
402 # define OP1 (&(stack[-1]))
404 # define OP2 (&(stack[0]))
406 # define DST (&(stack[-1]))
407 GENERATED /* may use stack[-1] ... stack[0] */
410 # line 263 "src/vm/jit/verify/icmds.c"
411 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT))
412 GENERATED VERIFY_ERROR("Array type mismatch");
414 # line 415 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
416 GENERATED stack += -1;
417 GENERATED stack[0].type = TYPE_INT;
428 GENERATED case ICMD_ISTORE:
429 GENERATED /* (I--) */
430 GENERATED CHECK_STACK_DEPTH(1);
431 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
432 GENERATED STORE_LOCAL(TYPE_INT, IPTR->dst.varindex);
433 GENERATED stack += -1;
437 GENERATED case ICMD_LSTORE:
438 GENERATED /* (L--) */
439 GENERATED CHECK_STACK_DEPTH(2);
440 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
441 GENERATED STORE_LOCAL_2_WORD(TYPE_LNG, IPTR->dst.varindex);
442 GENERATED stack += -2;
446 GENERATED case ICMD_FSTORE:
447 GENERATED /* (F--) */
448 GENERATED CHECK_STACK_DEPTH(1);
449 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
450 GENERATED STORE_LOCAL(TYPE_FLT, IPTR->dst.varindex);
451 GENERATED stack += -1;
455 GENERATED case ICMD_DSTORE:
456 GENERATED /* (D--) */
457 GENERATED CHECK_STACK_DEPTH(2);
458 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
459 GENERATED STORE_LOCAL_2_WORD(TYPE_DBL, IPTR->dst.varindex);
460 GENERATED stack += -2;
464 GENERATED case ICMD_ASTORE:
465 GENERATED /* (A--|R--) */
466 GENERATED CHECK_STACK_DEPTH(1);
468 # define OP1 (&(stack[0]))
469 GENERATED STORE_LOCAL(OP1->type, IPTR->dst.varindex);
471 # define DST LOCAL_SLOT(IPTR->dst.varindex)
472 GENERATED /* may use stack[0] ... stack[0] */
475 # line 106 "src/vm/jit/verify/icmds.c"
476 GENERATED TYPEINFO_COPY(OP1->typeinfo, DST->typeinfo);
478 # line 479 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
480 GENERATED stack += -1;
489 GENERATED case ICMD_IASTORE:
490 GENERATED /* (AII--) */
491 GENERATED maythrow = true;
492 GENERATED CHECK_STACK_DEPTH(3);
493 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
494 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
495 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
497 # define OP1 (&(stack[-2]))
499 # define OP2 (&(stack[-1]))
501 # define OP3 (&(stack[0]))
502 GENERATED /* may use stack[-2] ... stack[0] */
505 # line 294 "src/vm/jit/verify/icmds.c"
506 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT))
507 GENERATED VERIFY_ERROR("Array type mismatch");
509 # line 510 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
511 GENERATED stack += -3;
522 GENERATED case ICMD_LASTORE:
523 GENERATED /* (AIL--) */
524 GENERATED maythrow = true;
525 GENERATED CHECK_STACK_DEPTH(4);
526 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_ADR);
527 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_INT);
528 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
530 # define OP1 (&(stack[-3]))
532 # define OP2 (&(stack[-2]))
534 # define OP3 (&(stack[-1]))
535 GENERATED /* may use stack[-3] ... stack[0] */
538 # line 304 "src/vm/jit/verify/icmds.c"
539 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG))
540 GENERATED VERIFY_ERROR("Array type mismatch");
542 # line 543 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
544 GENERATED stack += -4;
555 GENERATED case ICMD_FASTORE:
556 GENERATED /* (AIF--) */
557 GENERATED maythrow = true;
558 GENERATED CHECK_STACK_DEPTH(3);
559 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
560 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
561 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
563 # define OP1 (&(stack[-2]))
565 # define OP2 (&(stack[-1]))
567 # define OP3 (&(stack[0]))
568 GENERATED /* may use stack[-2] ... stack[0] */
571 # line 289 "src/vm/jit/verify/icmds.c"
572 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT))
573 GENERATED VERIFY_ERROR("Array type mismatch");
575 # line 576 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
577 GENERATED stack += -3;
588 GENERATED case ICMD_DASTORE:
589 GENERATED /* (AID--) */
590 GENERATED maythrow = true;
591 GENERATED CHECK_STACK_DEPTH(4);
592 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_ADR);
593 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_INT);
594 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
596 # define OP1 (&(stack[-3]))
598 # define OP2 (&(stack[-2]))
600 # define OP3 (&(stack[-1]))
601 GENERATED /* may use stack[-3] ... stack[0] */
604 # line 284 "src/vm/jit/verify/icmds.c"
605 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE))
606 GENERATED VERIFY_ERROR("Array type mismatch");
608 # line 609 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
610 GENERATED stack += -4;
621 GENERATED case ICMD_AASTORE:
622 GENERATED /* (AIA--) */
623 GENERATED maythrow = true;
624 GENERATED CHECK_STACK_DEPTH(3);
625 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
626 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
627 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
629 # define OP1 (&(stack[-2]))
631 # define OP2 (&(stack[-1]))
633 # define OP3 (&(stack[0]))
634 GENERATED /* may use stack[-2] ... stack[0] */
637 # line 309 "src/vm/jit/verify/icmds.c"
638 GENERATED /* we just check the basic input types and that the */
639 GENERATED /* destination is an array of references. Assignability to */
640 GENERATED /* the actual array must be checked at runtime, each time the */
641 GENERATED /* instruction is performed. (See builtin_canstore.) */
642 GENERATED if (!TYPEINFO_MAYBE_ARRAY_OF_REFS(OP1->typeinfo))
643 GENERATED VERIFY_ERROR("illegal instruction: AASTORE to non-reference array");
645 # line 646 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
647 GENERATED stack += -3;
658 GENERATED case ICMD_BASTORE:
659 GENERATED /* (AII--) */
660 GENERATED maythrow = true;
661 GENERATED CHECK_STACK_DEPTH(3);
662 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
663 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
664 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
666 # define OP1 (&(stack[-2]))
668 # define OP2 (&(stack[-1]))
670 # define OP3 (&(stack[0]))
671 GENERATED /* may use stack[-2] ... stack[0] */
674 # line 273 "src/vm/jit/verify/icmds.c"
675 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BOOLEAN)
676 GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE))
677 GENERATED VERIFY_ERROR("Array type mismatch");
679 # line 680 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
681 GENERATED stack += -3;
692 GENERATED case ICMD_CASTORE:
693 GENERATED /* (AII--) */
694 GENERATED maythrow = true;
695 GENERATED CHECK_STACK_DEPTH(3);
696 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
697 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
698 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
700 # define OP1 (&(stack[-2]))
702 # define OP2 (&(stack[-1]))
704 # define OP3 (&(stack[0]))
705 GENERATED /* may use stack[-2] ... stack[0] */
708 # line 279 "src/vm/jit/verify/icmds.c"
709 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR))
710 GENERATED VERIFY_ERROR("Array type mismatch");
712 # line 713 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
714 GENERATED stack += -3;
725 GENERATED case ICMD_SASTORE:
726 GENERATED /* (AII--) */
727 GENERATED maythrow = true;
728 GENERATED CHECK_STACK_DEPTH(3);
729 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
730 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
731 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
733 # define OP1 (&(stack[-2]))
735 # define OP2 (&(stack[-1]))
737 # define OP3 (&(stack[0]))
738 GENERATED /* may use stack[-2] ... stack[0] */
741 # line 299 "src/vm/jit/verify/icmds.c"
742 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT))
743 GENERATED VERIFY_ERROR("Array type mismatch");
745 # line 746 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
747 GENERATED stack += -3;
758 GENERATED case ICMD_POP:
759 GENERATED /* (1--) */
760 GENERATED CHECK_STACK_DEPTH(1);
761 GENERATED /* may use stack[0] ... stack[0] */
764 # line 676 "src/vm/jit/verify/icmds.c"
765 GENERATED /* we pop 1 */
766 GENERATED CHECK_CAT1(stack[0]);
768 # line 769 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
770 GENERATED stack += -1;
774 GENERATED case ICMD_POP2:
775 GENERATED /* (11--|2--) */
776 GENERATED CHECK_STACK_DEPTH(2);
777 GENERATED /* may use stack[-1] ... stack[0] */
780 # line 681 "src/vm/jit/verify/icmds.c"
781 GENERATED /* we pop either 11 or 2 */
782 GENERATED if (IS_CAT1(stack[0]))
783 GENERATED CHECK_CAT1(stack[-1]);
785 # line 786 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
787 GENERATED stack += -2;
791 GENERATED case ICMD_DUP:
792 GENERATED /* (1--11) */
793 GENERATED CHECK_STACK_DEPTH(1);
794 GENERATED CHECK_STACK_SPACE(1);
796 # define DST (&(stack[0]))
797 GENERATED /* may use stack[0] ... stack[1] */
800 # line 696 "src/vm/jit/verify/icmds.c"
801 GENERATED /* we dup 1 */
802 GENERATED CHECK_CAT1(stack[0]);
804 GENERATED COPY_SLOT(stack[ 0], stack[ 1]);
806 # line 807 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
808 GENERATED stack += 1;
815 GENERATED case ICMD_DUP_X1:
816 GENERATED /* (11--111) */
817 GENERATED CHECK_STACK_DEPTH(2);
818 GENERATED CHECK_STACK_SPACE(1);
820 # define DST (&(stack[-1]))
821 GENERATED /* may use stack[-1] ... stack[1] */
824 # line 703 "src/vm/jit/verify/icmds.c"
825 GENERATED /* we dup 1 */
826 GENERATED CHECK_CAT1(stack[0]);
827 GENERATED /* we skip 1 */
828 GENERATED CHECK_CAT1(stack[-1]);
830 GENERATED COPY_SLOT(stack[ 0], stack[ 1]);
831 GENERATED COPY_SLOT(stack[-1], stack[ 0]);
832 GENERATED COPY_SLOT(stack[ 1], stack[-1]);
834 # line 835 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
836 GENERATED stack += 1;
843 GENERATED case ICMD_DUP_X2:
844 GENERATED /* (111--1111|21--121) */
845 GENERATED CHECK_STACK_DEPTH(3);
846 GENERATED CHECK_STACK_SPACE(1);
847 GENERATED /* may use stack[-2] ... stack[1] */
850 # line 714 "src/vm/jit/verify/icmds.c"
851 GENERATED /* we dup 1 */
852 GENERATED CHECK_CAT1(stack[0]);
853 GENERATED /* we skip either 11 or 2 */
854 GENERATED if (IS_CAT1(stack[-1]))
855 GENERATED CHECK_CAT1(stack[-2]);
857 GENERATED COPY_SLOT(stack[ 0], stack[ 1]);
858 GENERATED COPY_SLOT(stack[-1], stack[ 0]);
859 GENERATED COPY_SLOT(stack[-2], stack[-1]);
860 GENERATED COPY_SLOT(stack[ 1], stack[-2]);
862 # line 863 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
864 GENERATED stack += 1;
868 GENERATED case ICMD_DUP2:
869 GENERATED /* (11--1111|2--22) */
870 GENERATED CHECK_STACK_DEPTH(2);
871 GENERATED CHECK_STACK_SPACE(2);
872 GENERATED /* may use stack[-1] ... stack[2] */
875 # line 727 "src/vm/jit/verify/icmds.c"
876 GENERATED /* we dup either 11 or 2 */
877 GENERATED if (IS_CAT1(stack[0]))
878 GENERATED CHECK_CAT1(stack[-1]);
880 GENERATED COPY_SLOT(stack[ 0], stack[ 2]);
881 GENERATED COPY_SLOT(stack[-1], stack[ 1]);
883 # line 884 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
885 GENERATED stack += 2;
889 GENERATED case ICMD_DUP2_X1:
890 GENERATED /* (111--11111|12--212) */
891 GENERATED CHECK_STACK_DEPTH(3);
892 GENERATED CHECK_STACK_SPACE(2);
893 GENERATED /* may use stack[-2] ... stack[2] */
896 # line 736 "src/vm/jit/verify/icmds.c"
897 GENERATED /* we dup either 11 or 2 */
898 GENERATED if (IS_CAT1(stack[0]))
899 GENERATED CHECK_CAT1(stack[-1]);
900 GENERATED /* we skip 1 */
901 GENERATED CHECK_CAT1(stack[-2]);
903 GENERATED COPY_SLOT(stack[ 0], stack[ 2]);
904 GENERATED COPY_SLOT(stack[-1], stack[ 1]);
905 GENERATED COPY_SLOT(stack[-2], stack[ 0]);
906 GENERATED COPY_SLOT(stack[ 2], stack[-1]);
907 GENERATED COPY_SLOT(stack[ 1], stack[-2]);
909 # line 910 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
911 GENERATED stack += 2;
915 GENERATED case ICMD_DUP2_X2:
916 GENERATED /* (1111--111111|112--2112|22--222|211--11211) */
917 GENERATED CHECK_STACK_DEPTH(4);
918 GENERATED CHECK_STACK_SPACE(2);
919 GENERATED /* may use stack[-3] ... stack[2] */
922 # line 750 "src/vm/jit/verify/icmds.c"
923 GENERATED /* we dup either 11 or 2 */
924 GENERATED if (IS_CAT1(stack[0]))
925 GENERATED CHECK_CAT1(stack[-1]);
926 GENERATED /* we skip either 11 or 2 */
927 GENERATED if (IS_CAT1(stack[-2]))
928 GENERATED CHECK_CAT1(stack[-3]);
930 GENERATED COPY_SLOT(stack[ 0], stack[ 2]);
931 GENERATED COPY_SLOT(stack[-1], stack[ 1]);
932 GENERATED COPY_SLOT(stack[-2], stack[ 0]);
933 GENERATED COPY_SLOT(stack[-3], stack[-1]);
934 GENERATED COPY_SLOT(stack[ 2], stack[-2]);
935 GENERATED COPY_SLOT(stack[ 1], stack[-3]);
937 # line 938 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
939 GENERATED stack += 2;
943 GENERATED case ICMD_SWAP:
944 GENERATED /* (11--11) */
945 GENERATED CHECK_STACK_DEPTH(2);
947 # define DST (&(stack[-1]))
948 GENERATED /* may use stack[-1] ... stack[0] */
951 # line 687 "src/vm/jit/verify/icmds.c"
952 GENERATED CHECK_CAT1(stack[0]);
953 GENERATED CHECK_CAT1(stack[-1]);
955 GENERATED COPY_SLOT(stack[ 0], temp );
956 GENERATED COPY_SLOT(stack[-1], stack[ 0]);
957 GENERATED COPY_SLOT(temp , stack[-1]);
959 # line 960 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
967 GENERATED case ICMD_IADD:
968 GENERATED case ICMD_ISUB:
969 GENERATED case ICMD_IMUL:
970 GENERATED case ICMD_ISHL:
971 GENERATED case ICMD_ISHR:
972 GENERATED case ICMD_IUSHR:
973 GENERATED case ICMD_IAND:
974 GENERATED case ICMD_IOR:
975 GENERATED case ICMD_IXOR:
976 GENERATED /* (II--I) */
977 GENERATED CHECK_STACK_DEPTH(2);
978 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
979 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
980 GENERATED stack += -1;
984 GENERATED case ICMD_LADD:
985 GENERATED case ICMD_LSUB:
986 GENERATED case ICMD_LMUL:
987 GENERATED case ICMD_LAND:
988 GENERATED case ICMD_LOR:
989 GENERATED case ICMD_LXOR:
990 GENERATED /* (LL--L) */
991 GENERATED CHECK_STACK_DEPTH(4);
992 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_LNG);
993 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
994 GENERATED stack += -2;
998 GENERATED case ICMD_FADD:
999 GENERATED case ICMD_FSUB:
1000 GENERATED case ICMD_FMUL:
1001 GENERATED case ICMD_FDIV:
1002 GENERATED case ICMD_FREM:
1003 GENERATED /* (FF--F) */
1004 GENERATED CHECK_STACK_DEPTH(2);
1005 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_FLT);
1006 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1007 GENERATED stack += -1;
1011 GENERATED case ICMD_DADD:
1012 GENERATED case ICMD_DSUB:
1013 GENERATED case ICMD_DMUL:
1014 GENERATED case ICMD_DDIV:
1015 GENERATED case ICMD_DREM:
1016 GENERATED /* (DD--D) */
1017 GENERATED CHECK_STACK_DEPTH(4);
1018 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_DBL);
1019 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1020 GENERATED stack += -2;
1024 GENERATED case ICMD_IDIV:
1025 GENERATED case ICMD_IREM:
1026 GENERATED /* (II--I) */
1027 GENERATED maythrow = true;
1028 GENERATED CHECK_STACK_DEPTH(2);
1029 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
1030 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1031 GENERATED stack += -1;
1035 GENERATED case ICMD_LDIV:
1036 GENERATED case ICMD_LREM:
1037 GENERATED /* (LL--L) */
1038 GENERATED maythrow = true;
1039 GENERATED CHECK_STACK_DEPTH(4);
1040 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_LNG);
1041 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1042 GENERATED stack += -2;
1046 GENERATED case ICMD_INEG:
1047 GENERATED case ICMD_INT2BYTE:
1048 GENERATED case ICMD_INT2CHAR:
1049 GENERATED case ICMD_INT2SHORT:
1050 GENERATED /* (I--I) */
1051 GENERATED CHECK_STACK_DEPTH(1);
1052 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1056 GENERATED case ICMD_LNEG:
1057 GENERATED /* (L--L) */
1058 GENERATED CHECK_STACK_DEPTH(2);
1059 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1063 GENERATED case ICMD_FNEG:
1064 GENERATED /* (F--F) */
1065 GENERATED CHECK_STACK_DEPTH(1);
1066 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1070 GENERATED case ICMD_DNEG:
1071 GENERATED /* (D--D) */
1072 GENERATED CHECK_STACK_DEPTH(2);
1073 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1077 GENERATED case ICMD_LSHL:
1078 GENERATED case ICMD_LSHR:
1079 GENERATED case ICMD_LUSHR:
1080 GENERATED /* (LI--L) */
1081 GENERATED CHECK_STACK_DEPTH(3);
1082 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_LNG);
1083 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1084 GENERATED stack += -1;
1088 GENERATED case ICMD_IINC:
1089 GENERATED /* (--) */
1090 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_INT);
1094 GENERATED case ICMD_I2L:
1095 GENERATED /* (I--L) */
1096 GENERATED CHECK_STACK_DEPTH(1);
1097 GENERATED CHECK_STACK_SPACE(1);
1098 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1099 GENERATED stack += 1;
1100 GENERATED stack[0].type = TYPE_VOID;
1101 GENERATED stack[-1].type = TYPE_LNG;
1105 GENERATED case ICMD_I2F:
1106 GENERATED /* (I--F) */
1107 GENERATED CHECK_STACK_DEPTH(1);
1108 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1109 GENERATED stack[0].type = TYPE_FLT;
1113 GENERATED case ICMD_I2D:
1114 GENERATED /* (I--D) */
1115 GENERATED CHECK_STACK_DEPTH(1);
1116 GENERATED CHECK_STACK_SPACE(1);
1117 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1118 GENERATED stack += 1;
1119 GENERATED stack[0].type = TYPE_VOID;
1120 GENERATED stack[-1].type = TYPE_DBL;
1124 GENERATED case ICMD_L2I:
1125 GENERATED /* (L--I) */
1126 GENERATED CHECK_STACK_DEPTH(2);
1127 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1128 GENERATED stack += -1;
1129 GENERATED stack[0].type = TYPE_INT;
1133 GENERATED case ICMD_L2F:
1134 GENERATED /* (L--F) */
1135 GENERATED CHECK_STACK_DEPTH(2);
1136 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1137 GENERATED stack += -1;
1138 GENERATED stack[0].type = TYPE_FLT;
1142 GENERATED case ICMD_L2D:
1143 GENERATED /* (L--D) */
1144 GENERATED CHECK_STACK_DEPTH(2);
1145 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1146 GENERATED stack[0].type = TYPE_VOID;
1147 GENERATED stack[-1].type = TYPE_DBL;
1151 GENERATED case ICMD_F2I:
1152 GENERATED /* (F--I) */
1153 GENERATED CHECK_STACK_DEPTH(1);
1154 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1155 GENERATED stack[0].type = TYPE_INT;
1159 GENERATED case ICMD_F2L:
1160 GENERATED /* (F--L) */
1161 GENERATED CHECK_STACK_DEPTH(1);
1162 GENERATED CHECK_STACK_SPACE(1);
1163 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1164 GENERATED stack += 1;
1165 GENERATED stack[0].type = TYPE_VOID;
1166 GENERATED stack[-1].type = TYPE_LNG;
1170 GENERATED case ICMD_F2D:
1171 GENERATED /* (F--D) */
1172 GENERATED CHECK_STACK_DEPTH(1);
1173 GENERATED CHECK_STACK_SPACE(1);
1174 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1175 GENERATED stack += 1;
1176 GENERATED stack[0].type = TYPE_VOID;
1177 GENERATED stack[-1].type = TYPE_DBL;
1181 GENERATED case ICMD_D2I:
1182 GENERATED /* (D--I) */
1183 GENERATED CHECK_STACK_DEPTH(2);
1184 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1185 GENERATED stack += -1;
1186 GENERATED stack[0].type = TYPE_INT;
1190 GENERATED case ICMD_D2L:
1191 GENERATED /* (D--L) */
1192 GENERATED CHECK_STACK_DEPTH(2);
1193 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1194 GENERATED stack[0].type = TYPE_VOID;
1195 GENERATED stack[-1].type = TYPE_LNG;
1199 GENERATED case ICMD_D2F:
1200 GENERATED /* (D--F) */
1201 GENERATED CHECK_STACK_DEPTH(2);
1202 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1203 GENERATED stack += -1;
1204 GENERATED stack[0].type = TYPE_FLT;
1208 GENERATED case ICMD_LCMP:
1209 GENERATED /* (LL--I) */
1210 GENERATED CHECK_STACK_DEPTH(4);
1211 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_LNG);
1212 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1213 GENERATED stack += -3;
1214 GENERATED stack[0].type = TYPE_INT;
1218 GENERATED case ICMD_FCMPL:
1219 GENERATED case ICMD_FCMPG:
1220 GENERATED /* (FF--I) */
1221 GENERATED CHECK_STACK_DEPTH(2);
1222 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_FLT);
1223 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1224 GENERATED stack += -1;
1225 GENERATED stack[0].type = TYPE_INT;
1229 GENERATED case ICMD_DCMPL:
1230 GENERATED case ICMD_DCMPG:
1231 GENERATED /* (DD--I) */
1232 GENERATED CHECK_STACK_DEPTH(4);
1233 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_DBL);
1234 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1235 GENERATED stack += -3;
1236 GENERATED stack[0].type = TYPE_INT;
1240 GENERATED case ICMD_IFEQ:
1241 GENERATED case ICMD_IFNE:
1242 GENERATED case ICMD_IFLT:
1243 GENERATED case ICMD_IFGE:
1244 GENERATED case ICMD_IFGT:
1245 GENERATED case ICMD_IFLE:
1246 GENERATED /* (I--) */
1247 GENERATED CHECK_STACK_DEPTH(1);
1248 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1249 GENERATED stack += -1;
1250 GENERATED /* CAUTION: stack pointer changed before custom code! */
1252 # define OP1 (&(stack[1]))
1253 GENERATED /* may use stack[1] ... stack[1] */
1256 # line 391 "src/vm/jit/verify/icmds.c"
1257 GENERATED /* {RESULTNOW} */
1258 GENERATED TYPECHECK_COUNT(stat_ins_branch);
1260 GENERATED /* propagate stack and variables to the target block */
1261 GENERATED REACH(IPTR->dst);
1263 # line 1264 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1271 GENERATED case ICMD_IF_ICMPEQ:
1272 GENERATED case ICMD_IF_ICMPNE:
1273 GENERATED case ICMD_IF_ICMPLT:
1274 GENERATED case ICMD_IF_ICMPGE:
1275 GENERATED case ICMD_IF_ICMPGT:
1276 GENERATED case ICMD_IF_ICMPLE:
1277 GENERATED /* (II--) */
1278 GENERATED CHECK_STACK_DEPTH(2);
1279 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
1280 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1281 GENERATED stack += -2;
1282 GENERATED /* CAUTION: stack pointer changed before custom code! */
1284 # define OP1 (&(stack[1]))
1286 # define OP2 (&(stack[2]))
1287 GENERATED /* may use stack[1] ... stack[2] */
1290 # line 397 "src/vm/jit/verify/icmds.c"
1291 GENERATED /* {RESULTNOW} */
1292 GENERATED TYPECHECK_COUNT(stat_ins_branch);
1294 GENERATED /* propagate stack and variables to the target block */
1295 GENERATED REACH(IPTR->dst);
1297 # line 1298 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1307 GENERATED case ICMD_IF_ACMPEQ:
1308 GENERATED case ICMD_IF_ACMPNE:
1309 GENERATED /* (AA--) */
1310 GENERATED CHECK_STACK_DEPTH(2);
1311 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
1312 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1313 GENERATED stack += -2;
1314 GENERATED /* CAUTION: stack pointer changed before custom code! */
1316 # define OP1 (&(stack[1]))
1318 # define OP2 (&(stack[2]))
1319 GENERATED /* may use stack[1] ... stack[2] */
1322 # line 403 "src/vm/jit/verify/icmds.c"
1323 GENERATED /* {RESULTNOW} */
1324 GENERATED TYPECHECK_COUNT(stat_ins_branch);
1326 GENERATED /* propagate stack and variables to the target block */
1327 GENERATED REACH(IPTR->dst);
1329 # line 1330 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1339 GENERATED case ICMD_GOTO:
1340 GENERATED /* (--) */
1341 GENERATED superblockend = true;
1344 # line 388 "src/vm/jit/verify/icmds.c"
1345 GENERATED /* {RESULTNOW} */
1346 GENERATED TYPECHECK_COUNT(stat_ins_branch);
1348 GENERATED /* propagate stack and variables to the target block */
1349 GENERATED REACH(IPTR->dst);
1351 # line 1352 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1356 GENERATED case ICMD_JSR:
1357 GENERATED /* (--R) */
1358 GENERATED superblockend = true;
1359 GENERATED CHECK_STACK_SPACE(1);
1360 GENERATED stack += 1;
1361 GENERATED stack[0].type = TYPE_RET;
1362 GENERATED /* CAUTION: stack types changed before custom code! */
1363 GENERATED /* CAUTION: stack pointer changed before custom code! */
1365 # define DST (&(stack[0]))
1366 GENERATED /* may use stack[0] ... stack[0] */
1369 # line 558 "src/vm/jit/verify/icmds.c"
1370 GENERATED /* {RESULTNOW} */
1371 GENERATED tbptr = IPTR->sx.s23.s3.jsrtarget.block;
1373 GENERATED TYPEINFO_INIT_RETURNADDRESS(stack[0].typeinfo, tbptr);
1374 GENERATED REACH_BLOCK(tbptr);
1376 GENERATED stack = typecheck_stackbased_jsr(STATE, stack, stackfloor);
1377 GENERATED if (stack == NULL)
1378 GENERATED EXCEPTION;
1380 # line 1381 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1388 GENERATED case ICMD_RET:
1389 GENERATED /* (--) */
1390 GENERATED superblockend = true;
1393 # line 579 "src/vm/jit/verify/icmds.c"
1394 GENERATED /* {RESULTNOW} */
1395 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_RET);
1396 GENERATED if (!TYPEINFO_IS_PRIMITIVE(STATE->locals[IPTR->s1.varindex].typeinfo))
1397 GENERATED VERIFY_ERROR("illegal instruction: RET using non-returnAddress variable");
1399 GENERATED if (!typecheck_stackbased_ret(STATE, stack, stackfloor))
1400 GENERATED EXCEPTION;
1402 # line 1403 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1407 GENERATED case ICMD_TABLESWITCH:
1408 GENERATED /* (I--) */
1409 GENERATED superblockend = true;
1410 GENERATED CHECK_STACK_DEPTH(1);
1411 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1412 GENERATED stack += -1;
1413 GENERATED /* CAUTION: stack pointer changed before custom code! */
1415 # define OP1 (&(stack[1]))
1416 GENERATED /* may use stack[1] ... stack[1] */
1419 # line 429 "src/vm/jit/verify/icmds.c"
1420 GENERATED /* {RESULTNOW} */
1421 GENERATED TYPECHECK_COUNT(stat_ins_switch);
1423 GENERATED table = IPTR->dst.table;
1424 GENERATED i = IPTR->sx.s23.s3.tablehigh
1425 GENERATED - IPTR->sx.s23.s2.tablelow + 1 + 1; /* plus default */
1427 GENERATED while (--i >= 0) {
1428 GENERATED REACH(*table);
1432 GENERATED LOG("switch done");
1434 # line 1435 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1442 GENERATED case ICMD_LOOKUPSWITCH:
1443 GENERATED /* (I--) */
1444 GENERATED superblockend = true;
1445 GENERATED CHECK_STACK_DEPTH(1);
1446 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1447 GENERATED stack += -1;
1448 GENERATED /* CAUTION: stack pointer changed before custom code! */
1450 # define OP1 (&(stack[1]))
1451 GENERATED /* may use stack[1] ... stack[1] */
1454 # line 445 "src/vm/jit/verify/icmds.c"
1455 GENERATED /* {RESULTNOW} */
1456 GENERATED TYPECHECK_COUNT(stat_ins_switch);
1458 GENERATED lookup = IPTR->dst.lookup;
1459 GENERATED i = IPTR->sx.s23.s2.lookupcount;
1460 GENERATED REACH(IPTR->sx.s23.s3.lookupdefault);
1462 GENERATED while (--i >= 0) {
1463 GENERATED REACH(lookup->target);
1467 GENERATED LOG("switch done");
1469 # line 1470 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1477 GENERATED case ICMD_IRETURN:
1478 GENERATED /* (I--) */
1479 GENERATED superblockend = true;
1480 GENERATED CHECK_STACK_DEPTH(1);
1481 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1483 # define OP1 (&(stack[0]))
1484 GENERATED /* may use stack[0] ... stack[0] */
1487 # line 511 "src/vm/jit/verify/icmds.c"
1488 GENERATED if (STATE->returntype.type != TYPE_INT)
1489 GENERATED VERIFY_ERROR("Return type mismatch");
1491 # line 1492 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1493 GENERATED goto return_tail;
1499 GENERATED case ICMD_LRETURN:
1500 GENERATED /* (L--) */
1501 GENERATED superblockend = true;
1502 GENERATED CHECK_STACK_DEPTH(2);
1503 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1505 # define OP1 (&(stack[-1]))
1506 GENERATED /* may use stack[-1] ... stack[0] */
1509 # line 516 "src/vm/jit/verify/icmds.c"
1510 GENERATED if (STATE->returntype.type != TYPE_LNG)
1511 GENERATED VERIFY_ERROR("Return type mismatch");
1513 # line 1514 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1515 GENERATED goto return_tail;
1521 GENERATED case ICMD_FRETURN:
1522 GENERATED /* (F--) */
1523 GENERATED superblockend = true;
1524 GENERATED CHECK_STACK_DEPTH(1);
1525 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1527 # define OP1 (&(stack[0]))
1528 GENERATED /* may use stack[0] ... stack[0] */
1531 # line 521 "src/vm/jit/verify/icmds.c"
1532 GENERATED if (STATE->returntype.type != TYPE_FLT)
1533 GENERATED VERIFY_ERROR("Return type mismatch");
1535 # line 1536 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1537 GENERATED goto return_tail;
1543 GENERATED case ICMD_DRETURN:
1544 GENERATED /* (D--) */
1545 GENERATED superblockend = true;
1546 GENERATED CHECK_STACK_DEPTH(2);
1547 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1549 # define OP1 (&(stack[-1]))
1550 GENERATED /* may use stack[-1] ... stack[0] */
1553 # line 526 "src/vm/jit/verify/icmds.c"
1554 GENERATED if (STATE->returntype.type != TYPE_DBL)
1555 GENERATED VERIFY_ERROR("Return type mismatch");
1557 # line 1558 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1559 GENERATED goto return_tail;
1565 GENERATED case ICMD_ARETURN:
1566 GENERATED /* (A--) */
1567 GENERATED maythrow = true;
1568 GENERATED superblockend = true;
1569 GENERATED CHECK_STACK_DEPTH(1);
1570 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1572 # define OP1 (&(stack[0]))
1573 GENERATED /* may use stack[0] ... stack[0] */
1576 # line 486 "src/vm/jit/verify/icmds.c"
1577 GENERATED TYPECHECK_COUNT(stat_ins_areturn);
1578 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
1579 GENERATED VERIFY_ERROR("illegal instruction: ARETURN on non-reference");
1581 GENERATED if (STATE->returntype.type != TYPE_ADR
1582 GENERATED || (r = typeinfo_is_assignable(&OP1->typeinfo,&(STATE->returntype.typeinfo)))
1583 GENERATED == typecheck_FALSE)
1584 GENERATED VERIFY_ERROR("Return type mismatch");
1585 GENERATED if (r == typecheck_FAIL)
1586 GENERATED EXCEPTION;
1587 GENERATED if (r == typecheck_MAYBE) {
1588 GENERATED /* the check has to be postponed, we need a patcher */
1589 GENERATED TYPECHECK_COUNT(stat_ins_areturn_unresolved);
1590 GENERATED IPTR->sx.s23.s2.uc = create_unresolved_class(
1592 GENERATED METHOD->parseddesc->returntype.classref,
1593 GENERATED &OP1->typeinfo);
1594 GENERATED IPTR->flags.bits |= INS_FLAG_UNRESOLVED;
1597 # line 1598 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1599 GENERATED goto return_tail;
1605 GENERATED case ICMD_RETURN:
1606 GENERATED /* (--) */
1607 GENERATED superblockend = true;
1610 # line 531 "src/vm/jit/verify/icmds.c"
1611 GENERATED if (STATE->returntype.type != TYPE_VOID)
1612 GENERATED VERIFY_ERROR("Return type mismatch");
1614 GENERATED return_tail:
1615 GENERATED TYPECHECK_COUNT(stat_ins_primitive_return);
1617 GENERATED if (STATE->initmethod && METHOD->clazz != class_java_lang_Object) {
1618 GENERATED /* Check if the 'this' instance has been initialized. */
1619 GENERATED LOG("Checking <init> marker");
1621 # if defined(TYPECHECK_VARIABLESBASED)
1622 GENERATED if (!typevector_checktype(jd->var,STATE->numlocals-1,TYPE_INT))
1625 GENERATED if (STATE->locals[STATE->numlocals-1].type != TYPE_INT)
1628 GENERATED VERIFY_ERROR("<init> method does not initialize 'this'");
1631 # line 1632 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1636 GENERATED case ICMD_GETSTATIC:
1637 GENERATED /* (--1|--2) */
1638 GENERATED maythrow = true;
1639 GENERATED /* variable number of outslots! */
1642 # line 156 "src/vm/jit/verify/icmds.c"
1643 GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, NULL, NULL, stack);
1644 GENERATED if (stack == NULL)
1645 GENERATED EXCEPTION;
1647 # line 1648 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1652 GENERATED case ICMD_PUTSTATIC:
1653 GENERATED /* (1--|2--) */
1654 GENERATED maythrow = true;
1655 GENERATED /* variable number of inslots! */
1658 # line 138 "src/vm/jit/verify/icmds.c"
1659 GENERATED CHECK_STACK_DEPTH(1);
1660 GENERATED if (!IS_CAT1(stack[0])) {
1661 GENERATED /* (stack depth >= 2 is guaranteed) */
1662 GENERATED stack -= 1;
1664 GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, NULL, stack, stack-1);
1665 GENERATED if (stack == NULL)
1666 GENERATED EXCEPTION;
1668 # line 1669 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1673 GENERATED case ICMD_GETFIELD:
1674 GENERATED /* (A--1|A--2) */
1675 GENERATED maythrow = true;
1676 GENERATED CHECK_STACK_DEPTH(1);
1677 GENERATED /* variable number of outslots! */
1680 # line 149 "src/vm/jit/verify/icmds.c"
1681 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1682 GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, stack, NULL, stack-1);
1683 GENERATED if (stack == NULL)
1684 GENERATED EXCEPTION;
1686 # line 1687 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1691 GENERATED case ICMD_PUTFIELD:
1692 GENERATED /* (A1--|A2--) */
1693 GENERATED maythrow = true;
1694 GENERATED /* variable number of inslots! */
1697 # line 126 "src/vm/jit/verify/icmds.c"
1698 GENERATED CHECK_STACK_DEPTH(2);
1699 GENERATED if (!IS_CAT1(stack[0])) {
1700 GENERATED CHECK_STACK_DEPTH(3);
1701 GENERATED stack -= 1;
1703 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
1704 GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, stack-1, stack, stack-2);
1705 GENERATED if (stack == NULL)
1706 GENERATED EXCEPTION;
1708 # line 1709 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1713 GENERATED case ICMD_INVOKEVIRTUAL:
1714 GENERATED case ICMD_INVOKESPECIAL:
1715 GENERATED case ICMD_INVOKESTATIC:
1716 GENERATED case ICMD_INVOKEINTERFACE:
1717 GENERATED /* (.--1|.--2|.--) */
1718 GENERATED maythrow = true;
1719 GENERATED /* variable number of inslots! */
1720 GENERATED /* variable number of outslots! */
1723 # line 602 "src/vm/jit/verify/icmds.c"
1724 GENERATED TYPECHECK_COUNT(stat_ins_invoke);
1726 GENERATED INSTRUCTION_GET_METHODDESC(IPTR, md);
1727 GENERATED CHECK_STACK_DEPTH(md->paramslots);
1729 GENERATED if (!typecheck_stackbased_verify_invocation(STATE, stack, stackfloor))
1730 GENERATED EXCEPTION;
1732 GENERATED stack -= md->paramslots;
1734 GENERATED if (md->returntype.type != TYPE_VOID) {
1735 GENERATED if (IS_2_WORD_TYPE(md->returntype.type)) {
1736 GENERATED CHECK_STACK_SPACE(2);
1737 GENERATED stack += 2;
1738 GENERATED stack[0].type = TYPE_VOID;
1739 GENERATED stack[-1].type = md->returntype.type;
1742 GENERATED CHECK_STACK_SPACE(1);
1743 GENERATED stack += 1;
1744 GENERATED stack[0].type = md->returntype.type;
1747 GENERATED TYPECHECK_COUNTIF(INSTRUCTION_IS_UNRESOLVED(IPTR), stat_ins_invoke_unresolved);
1749 # line 1750 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1754 GENERATED case ICMD_ARRAYLENGTH:
1755 GENERATED /* (A--I) */
1756 GENERATED maythrow = true;
1757 GENERATED CHECK_STACK_DEPTH(1);
1758 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1760 # define OP1 (&(stack[0]))
1762 # define DST (&(stack[0]))
1763 GENERATED /* may use stack[0] ... stack[0] */
1766 # line 231 "src/vm/jit/verify/icmds.c"
1767 GENERATED if (!TYPEINFO_MAYBE_ARRAY(OP1->typeinfo)
1768 GENERATED && OP1->typeinfo.typeclass.cls != pseudo_class_Arraystub)
1769 GENERATED VERIFY_ERROR("illegal instruction: ARRAYLENGTH on non-array");
1771 # line 1772 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1773 GENERATED stack[0].type = TYPE_INT;
1782 GENERATED case ICMD_ATHROW:
1783 GENERATED /* (A--) */
1784 GENERATED maythrow = true;
1785 GENERATED superblockend = true;
1786 GENERATED CHECK_STACK_DEPTH(1);
1787 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1789 # define OP1 (&(stack[0]))
1790 GENERATED /* may use stack[0] ... stack[0] */
1793 # line 465 "src/vm/jit/verify/icmds.c"
1794 GENERATED TYPECHECK_COUNT(stat_ins_athrow);
1795 GENERATED r = typeinfo_is_assignable_to_class(&OP1->typeinfo,
1796 GENERATED CLASSREF_OR_CLASSINFO(class_java_lang_Throwable));
1797 GENERATED if (r == typecheck_FALSE)
1798 GENERATED VERIFY_ERROR("illegal instruction: ATHROW on non-Throwable");
1799 GENERATED if (r == typecheck_FAIL)
1800 GENERATED EXCEPTION;
1801 GENERATED if (r == typecheck_MAYBE) {
1802 GENERATED /* the check has to be postponed. we need a patcher */
1803 GENERATED TYPECHECK_COUNT(stat_ins_athrow_unresolved);
1804 GENERATED IPTR->sx.s23.s2.uc = create_unresolved_class(
1806 GENERATED /* XXX make this more efficient, use class_java_lang_Throwable
1807 GENERATED * directly */
1808 GENERATED class_get_classref(METHOD->clazz,utf_java_lang_Throwable),
1809 GENERATED &OP1->typeinfo);
1810 GENERATED IPTR->flags.bits |= INS_FLAG_UNRESOLVED;
1813 # line 1814 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1815 GENERATED stack += -1;
1822 GENERATED case ICMD_CHECKCAST:
1823 GENERATED /* (A--A) */
1824 GENERATED maythrow = true;
1825 GENERATED CHECK_STACK_DEPTH(1);
1826 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1828 # define OP1 (&(stack[0]))
1830 # define DST (&(stack[0]))
1831 GENERATED /* may use stack[0] ... stack[0] */
1834 # line 365 "src/vm/jit/verify/icmds.c"
1836 # if !defined(TYPECHECK_TYPEINFERER)
1837 GENERATED /* returnAddress is not allowed */
1838 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
1839 GENERATED VERIFY_ERROR("Illegal instruction: CHECKCAST on non-reference");
1843 GENERATED /* XXX only if narrower */
1844 GENERATED if (!typeinfo_init_class(&(DST->typeinfo),IPTR->sx.s23.s3.c))
1845 GENERATED EXCEPTION;
1847 # line 1848 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1857 GENERATED case ICMD_INSTANCEOF:
1858 GENERATED /* (A--I) */
1859 GENERATED maythrow = true;
1860 GENERATED CHECK_STACK_DEPTH(1);
1861 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1863 # define OP1 (&(stack[0]))
1865 # define DST (&(stack[0]))
1866 GENERATED /* may use stack[0] ... stack[0] */
1869 # line 377 "src/vm/jit/verify/icmds.c"
1870 GENERATED /* returnAddress is not allowed */
1871 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
1872 GENERATED VERIFY_ERROR("Illegal instruction: INSTANCEOF on non-reference");
1874 GENERATED /* XXX should propagate type information to the following if-branches */
1876 # line 1877 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1878 GENERATED stack[0].type = TYPE_INT;
1887 GENERATED case ICMD_MULTIANEWARRAY:
1888 GENERATED /* (.--A) */
1889 GENERATED maythrow = true;
1890 GENERATED /* variable number of inslots! */
1893 # line 640 "src/vm/jit/verify/icmds.c"
1894 GENERATED if (!typecheck_stackbased_multianewarray(STATE, stack, stackfloor))
1895 GENERATED EXCEPTION;
1896 GENERATED stack -= (IPTR->s1.argcount - 1);
1897 GENERATED stack[0].type = TYPE_ADR;
1899 # line 1900 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1904 GENERATED case ICMD_IFNULL:
1905 GENERATED case ICMD_IFNONNULL:
1906 GENERATED /* (A--) */
1907 GENERATED CHECK_STACK_DEPTH(1);
1908 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1909 GENERATED stack += -1;
1910 GENERATED /* CAUTION: stack pointer changed before custom code! */
1912 # define OP1 (&(stack[1]))
1913 GENERATED /* may use stack[1] ... stack[1] */
1916 # line 389 "src/vm/jit/verify/icmds.c"
1917 GENERATED /* {RESULTNOW} */
1918 GENERATED TYPECHECK_COUNT(stat_ins_branch);
1920 GENERATED /* propagate stack and variables to the target block */
1921 GENERATED REACH(IPTR->dst);
1923 # line 1924 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1931 GENERATED case ICMD_BUILTIN:
1932 GENERATED /* (.--1|.--2|.--) */
1933 GENERATED maythrow = true;
1934 GENERATED /* variable number of inslots! */
1935 GENERATED /* variable number of outslots! */
1938 # line 656 "src/vm/jit/verify/icmds.c"
1939 GENERATED TYPECHECK_COUNT(stat_ins_builtin);
1940 GENERATED if (!typecheck_stackbased_verify_builtin(STATE, stack, stackfloor))
1941 GENERATED EXCEPTION;
1943 GENERATED /* pop operands and push return value */
1945 GENERATED u1 rtype = IPTR->sx.s23.s3.bte->md->returntype.type;
1946 GENERATED stack -= IPTR->sx.s23.s3.bte->md->paramslots;
1947 GENERATED if (rtype != TYPE_VOID) {
1948 GENERATED if (IS_2_WORD_TYPE(rtype))
1949 GENERATED stack += 2;
1951 GENERATED stack += 1;
1955 # line 1956 "src/vm/jit/verify/typecheck-stackbased-gen.inc"