3 GENERATED case ICMD_NOP:
4 GENERATED case ICMD_BREAKPOINT:
9 GENERATED case ICMD_ACONST:
11 GENERATED maythrow = true;
12 GENERATED CHECK_STACK_SPACE(1);
14 # define DST (&(stack[1]))
15 GENERATED /* may use stack[1] ... stack[1] */
18 # line 345 "src/vm/jit/verify/icmds.cpp"
19 GENERATED if (IPTR->flags.bits & INS_FLAG_CLASS) {
20 GENERATED /* a java.lang.Class reference */
21 GENERATED TYPEINFO_INIT_JAVA_LANG_CLASS(DST->typeinfo,IPTR->sx.val.c);
24 GENERATED if (IPTR->sx.val.anyptr == NULL)
25 GENERATED TYPEINFO_INIT_NULLTYPE(DST->typeinfo);
27 GENERATED /* string constant (or constant for builtin function) */
28 GENERATED typeinfo_init_classinfo(&(DST->typeinfo),class_java_lang_String);
32 # line 33 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
35 GENERATED stack[0].type = TYPE_ADR;
42 GENERATED case ICMD_CHECKNULL:
43 GENERATED /* (A--A) */
44 GENERATED maythrow = true;
45 GENERATED CHECK_STACK_DEPTH(1);
46 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
50 GENERATED case ICMD_ICONST:
52 GENERATED CHECK_STACK_SPACE(1);
54 GENERATED stack[0].type = TYPE_INT;
58 GENERATED case ICMD_LCONST:
60 GENERATED CHECK_STACK_SPACE(2);
62 GENERATED stack[0].type = TYPE_VOID;
63 GENERATED stack[-1].type = TYPE_LNG;
67 GENERATED case ICMD_FCONST:
69 GENERATED CHECK_STACK_SPACE(1);
71 GENERATED stack[0].type = TYPE_FLT;
75 GENERATED case ICMD_DCONST:
77 GENERATED CHECK_STACK_SPACE(2);
79 GENERATED stack[0].type = TYPE_VOID;
80 GENERATED stack[-1].type = TYPE_DBL;
84 GENERATED case ICMD_ILOAD:
86 GENERATED CHECK_STACK_SPACE(1);
87 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_INT);
89 GENERATED stack[0].type = TYPE_INT;
93 GENERATED case ICMD_LLOAD:
95 GENERATED CHECK_STACK_SPACE(2);
96 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_LNG);
98 GENERATED stack[0].type = TYPE_VOID;
99 GENERATED stack[-1].type = TYPE_LNG;
103 GENERATED case ICMD_FLOAD:
104 GENERATED /* (--F) */
105 GENERATED CHECK_STACK_SPACE(1);
106 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_FLT);
107 GENERATED stack += 1;
108 GENERATED stack[0].type = TYPE_FLT;
112 GENERATED case ICMD_DLOAD:
113 GENERATED /* (--D) */
114 GENERATED CHECK_STACK_SPACE(2);
115 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_DBL);
116 GENERATED stack += 2;
117 GENERATED stack[0].type = TYPE_VOID;
118 GENERATED stack[-1].type = TYPE_DBL;
122 GENERATED case ICMD_ALOAD:
123 GENERATED /* (--A) */
124 GENERATED CHECK_STACK_SPACE(1);
125 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_ADR);
127 # define OP1 LOCAL_SLOT(IPTR->s1.varindex)
129 # define DST (&(stack[1]))
130 GENERATED /* may use stack[1] ... stack[1] */
133 # line 89 "src/vm/jit/verify/icmds.cpp"
134 GENERATED TYPECHECK_COUNT(stat_ins_aload);
137 # if !defined(TYPECHECK_TYPEINFERER)
138 GENERATED /* loading a returnAddress is not allowed */
139 GENERATED if (!TYPEDESC_IS_REFERENCE(*OP1)) {
140 GENERATED VERIFY_ERROR("illegal instruction: ALOAD loading non-reference");
144 GENERATED TYPEINFO_COPY(OP1->typeinfo,DST->typeinfo);
146 # line 147 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
148 GENERATED stack += 1;
149 GENERATED stack[0].type = TYPE_ADR;
158 GENERATED case ICMD_IALOAD:
159 GENERATED /* (AI--I) */
160 GENERATED maythrow = true;
161 GENERATED CHECK_STACK_DEPTH(2);
162 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
163 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
165 # define OP1 (&(stack[-1]))
167 # define OP2 (&(stack[0]))
169 # define DST (&(stack[-1]))
170 GENERATED /* may use stack[-1] ... stack[0] */
173 # line 256 "src/vm/jit/verify/icmds.cpp"
174 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT))
175 GENERATED VERIFY_ERROR("Array type mismatch");
177 # line 178 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
179 GENERATED stack += -1;
180 GENERATED stack[0].type = TYPE_INT;
191 GENERATED case ICMD_LALOAD:
192 GENERATED /* (AI--L) */
193 GENERATED maythrow = true;
194 GENERATED CHECK_STACK_DEPTH(2);
195 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
196 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
198 # define OP1 (&(stack[-1]))
200 # define OP2 (&(stack[0]))
202 # define DST (&(stack[-1]))
203 GENERATED /* may use stack[-1] ... stack[0] */
206 # line 266 "src/vm/jit/verify/icmds.cpp"
207 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG))
208 GENERATED VERIFY_ERROR("Array type mismatch");
210 # line 211 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
212 GENERATED stack[0].type = TYPE_VOID;
213 GENERATED stack[-1].type = TYPE_LNG;
224 GENERATED case ICMD_FALOAD:
225 GENERATED /* (AI--F) */
226 GENERATED maythrow = true;
227 GENERATED CHECK_STACK_DEPTH(2);
228 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
229 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
231 # define OP1 (&(stack[-1]))
233 # define OP2 (&(stack[0]))
235 # define DST (&(stack[-1]))
236 GENERATED /* may use stack[-1] ... stack[0] */
239 # line 251 "src/vm/jit/verify/icmds.cpp"
240 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT))
241 GENERATED VERIFY_ERROR("Array type mismatch");
243 # line 244 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
245 GENERATED stack += -1;
246 GENERATED stack[0].type = TYPE_FLT;
257 GENERATED case ICMD_DALOAD:
258 GENERATED /* (AI--D) */
259 GENERATED maythrow = true;
260 GENERATED CHECK_STACK_DEPTH(2);
261 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
262 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
264 # define OP1 (&(stack[-1]))
266 # define OP2 (&(stack[0]))
268 # define DST (&(stack[-1]))
269 GENERATED /* may use stack[-1] ... stack[0] */
272 # line 246 "src/vm/jit/verify/icmds.cpp"
273 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE))
274 GENERATED VERIFY_ERROR("Array type mismatch");
276 # line 277 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
278 GENERATED stack[0].type = TYPE_VOID;
279 GENERATED stack[-1].type = TYPE_DBL;
290 GENERATED case ICMD_AALOAD:
291 GENERATED /* (AI--A) */
292 GENERATED maythrow = true;
293 GENERATED CHECK_STACK_DEPTH(2);
294 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
295 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
297 # define OP1 (&(stack[-1]))
299 # define OP2 (&(stack[0]))
301 # define DST (&(stack[-1]))
302 GENERATED /* may use stack[-1] ... stack[0] */
305 # line 111 "src/vm/jit/verify/icmds.cpp"
307 # if !defined(TYPECHECK_TYPEINFERER)
308 GENERATED if (!TYPEINFO_MAYBE_ARRAY_OF_REFS(OP1->typeinfo))
309 GENERATED VERIFY_ERROR("illegal instruction: AALOAD on non-reference array");
313 GENERATED if (!typeinfo_init_component(&OP1->typeinfo,&DST->typeinfo))
316 # line 317 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
318 GENERATED stack += -1;
329 GENERATED case ICMD_BALOAD:
330 GENERATED /* (AI--I) */
331 GENERATED maythrow = true;
332 GENERATED CHECK_STACK_DEPTH(2);
333 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
334 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
336 # define OP1 (&(stack[-1]))
338 # define OP2 (&(stack[0]))
340 # define DST (&(stack[-1]))
341 GENERATED /* may use stack[-1] ... stack[0] */
344 # line 235 "src/vm/jit/verify/icmds.cpp"
345 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BOOLEAN)
346 GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE))
347 GENERATED VERIFY_ERROR("Array type mismatch");
349 # line 350 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
351 GENERATED stack += -1;
352 GENERATED stack[0].type = TYPE_INT;
363 GENERATED case ICMD_CALOAD:
364 GENERATED /* (AI--I) */
365 GENERATED maythrow = true;
366 GENERATED CHECK_STACK_DEPTH(2);
367 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
368 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
370 # define OP1 (&(stack[-1]))
372 # define OP2 (&(stack[0]))
374 # define DST (&(stack[-1]))
375 GENERATED /* may use stack[-1] ... stack[0] */
378 # line 241 "src/vm/jit/verify/icmds.cpp"
379 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR))
380 GENERATED VERIFY_ERROR("Array type mismatch");
382 # line 383 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
384 GENERATED stack += -1;
385 GENERATED stack[0].type = TYPE_INT;
396 GENERATED case ICMD_SALOAD:
397 GENERATED /* (AI--I) */
398 GENERATED maythrow = true;
399 GENERATED CHECK_STACK_DEPTH(2);
400 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
401 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
403 # define OP1 (&(stack[-1]))
405 # define OP2 (&(stack[0]))
407 # define DST (&(stack[-1]))
408 GENERATED /* may use stack[-1] ... stack[0] */
411 # line 261 "src/vm/jit/verify/icmds.cpp"
412 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT))
413 GENERATED VERIFY_ERROR("Array type mismatch");
415 # line 416 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
417 GENERATED stack += -1;
418 GENERATED stack[0].type = TYPE_INT;
429 GENERATED case ICMD_ISTORE:
430 GENERATED /* (I--) */
431 GENERATED CHECK_STACK_DEPTH(1);
432 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
433 GENERATED STORE_LOCAL(TYPE_INT, IPTR->dst.varindex);
434 GENERATED stack += -1;
438 GENERATED case ICMD_LSTORE:
439 GENERATED /* (L--) */
440 GENERATED CHECK_STACK_DEPTH(2);
441 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
442 GENERATED STORE_LOCAL_2_WORD(TYPE_LNG, IPTR->dst.varindex);
443 GENERATED stack += -2;
447 GENERATED case ICMD_FSTORE:
448 GENERATED /* (F--) */
449 GENERATED CHECK_STACK_DEPTH(1);
450 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
451 GENERATED STORE_LOCAL(TYPE_FLT, IPTR->dst.varindex);
452 GENERATED stack += -1;
456 GENERATED case ICMD_DSTORE:
457 GENERATED /* (D--) */
458 GENERATED CHECK_STACK_DEPTH(2);
459 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
460 GENERATED STORE_LOCAL_2_WORD(TYPE_DBL, IPTR->dst.varindex);
461 GENERATED stack += -2;
465 GENERATED case ICMD_ASTORE:
466 GENERATED /* (A--|R--) */
467 GENERATED CHECK_STACK_DEPTH(1);
469 # define OP1 (&(stack[0]))
470 GENERATED STORE_LOCAL(OP1->type, IPTR->dst.varindex);
472 # define DST LOCAL_SLOT(IPTR->dst.varindex)
473 GENERATED /* may use stack[0] ... stack[0] */
476 # line 104 "src/vm/jit/verify/icmds.cpp"
477 GENERATED TYPEINFO_COPY(OP1->typeinfo, DST->typeinfo);
479 # line 480 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
481 GENERATED stack += -1;
490 GENERATED case ICMD_IASTORE:
491 GENERATED /* (AII--) */
492 GENERATED maythrow = true;
493 GENERATED CHECK_STACK_DEPTH(3);
494 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
495 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
496 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
498 # define OP1 (&(stack[-2]))
500 # define OP2 (&(stack[-1]))
502 # define OP3 (&(stack[0]))
503 GENERATED /* may use stack[-2] ... stack[0] */
506 # line 292 "src/vm/jit/verify/icmds.cpp"
507 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT))
508 GENERATED VERIFY_ERROR("Array type mismatch");
510 # line 511 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
512 GENERATED stack += -3;
523 GENERATED case ICMD_LASTORE:
524 GENERATED /* (AIL--) */
525 GENERATED maythrow = true;
526 GENERATED CHECK_STACK_DEPTH(4);
527 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_ADR);
528 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_INT);
529 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
531 # define OP1 (&(stack[-3]))
533 # define OP2 (&(stack[-2]))
535 # define OP3 (&(stack[-1]))
536 GENERATED /* may use stack[-3] ... stack[0] */
539 # line 302 "src/vm/jit/verify/icmds.cpp"
540 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG))
541 GENERATED VERIFY_ERROR("Array type mismatch");
543 # line 544 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
545 GENERATED stack += -4;
556 GENERATED case ICMD_FASTORE:
557 GENERATED /* (AIF--) */
558 GENERATED maythrow = true;
559 GENERATED CHECK_STACK_DEPTH(3);
560 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
561 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
562 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
564 # define OP1 (&(stack[-2]))
566 # define OP2 (&(stack[-1]))
568 # define OP3 (&(stack[0]))
569 GENERATED /* may use stack[-2] ... stack[0] */
572 # line 287 "src/vm/jit/verify/icmds.cpp"
573 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT))
574 GENERATED VERIFY_ERROR("Array type mismatch");
576 # line 577 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
578 GENERATED stack += -3;
589 GENERATED case ICMD_DASTORE:
590 GENERATED /* (AID--) */
591 GENERATED maythrow = true;
592 GENERATED CHECK_STACK_DEPTH(4);
593 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_ADR);
594 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_INT);
595 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
597 # define OP1 (&(stack[-3]))
599 # define OP2 (&(stack[-2]))
601 # define OP3 (&(stack[-1]))
602 GENERATED /* may use stack[-3] ... stack[0] */
605 # line 282 "src/vm/jit/verify/icmds.cpp"
606 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE))
607 GENERATED VERIFY_ERROR("Array type mismatch");
609 # line 610 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
611 GENERATED stack += -4;
622 GENERATED case ICMD_AASTORE:
623 GENERATED /* (AIA--) */
624 GENERATED maythrow = true;
625 GENERATED CHECK_STACK_DEPTH(3);
626 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
627 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
628 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
630 # define OP1 (&(stack[-2]))
632 # define OP2 (&(stack[-1]))
634 # define OP3 (&(stack[0]))
635 GENERATED /* may use stack[-2] ... stack[0] */
638 # line 307 "src/vm/jit/verify/icmds.cpp"
639 GENERATED /* we just check the basic input types and that the */
640 GENERATED /* destination is an array of references. Assignability to */
641 GENERATED /* the actual array must be checked at runtime, each time the */
642 GENERATED /* instruction is performed. (See builtin_canstore.) */
643 GENERATED if (!TYPEINFO_MAYBE_ARRAY_OF_REFS(OP1->typeinfo))
644 GENERATED VERIFY_ERROR("illegal instruction: AASTORE to non-reference array");
646 # line 647 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
648 GENERATED stack += -3;
659 GENERATED case ICMD_BASTORE:
660 GENERATED /* (AII--) */
661 GENERATED maythrow = true;
662 GENERATED CHECK_STACK_DEPTH(3);
663 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
664 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
665 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
667 # define OP1 (&(stack[-2]))
669 # define OP2 (&(stack[-1]))
671 # define OP3 (&(stack[0]))
672 GENERATED /* may use stack[-2] ... stack[0] */
675 # line 271 "src/vm/jit/verify/icmds.cpp"
676 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BOOLEAN)
677 GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE))
678 GENERATED VERIFY_ERROR("Array type mismatch");
680 # line 681 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
682 GENERATED stack += -3;
693 GENERATED case ICMD_CASTORE:
694 GENERATED /* (AII--) */
695 GENERATED maythrow = true;
696 GENERATED CHECK_STACK_DEPTH(3);
697 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
698 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
699 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
701 # define OP1 (&(stack[-2]))
703 # define OP2 (&(stack[-1]))
705 # define OP3 (&(stack[0]))
706 GENERATED /* may use stack[-2] ... stack[0] */
709 # line 277 "src/vm/jit/verify/icmds.cpp"
710 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR))
711 GENERATED VERIFY_ERROR("Array type mismatch");
713 # line 714 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
715 GENERATED stack += -3;
726 GENERATED case ICMD_SASTORE:
727 GENERATED /* (AII--) */
728 GENERATED maythrow = true;
729 GENERATED CHECK_STACK_DEPTH(3);
730 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_ADR);
731 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
732 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
734 # define OP1 (&(stack[-2]))
736 # define OP2 (&(stack[-1]))
738 # define OP3 (&(stack[0]))
739 GENERATED /* may use stack[-2] ... stack[0] */
742 # line 297 "src/vm/jit/verify/icmds.cpp"
743 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT))
744 GENERATED VERIFY_ERROR("Array type mismatch");
746 # line 747 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
748 GENERATED stack += -3;
759 GENERATED case ICMD_POP:
760 GENERATED /* (1--) */
761 GENERATED CHECK_STACK_DEPTH(1);
762 GENERATED /* may use stack[0] ... stack[0] */
765 # line 674 "src/vm/jit/verify/icmds.cpp"
766 GENERATED /* we pop 1 */
767 GENERATED CHECK_CAT1(stack[0]);
769 # line 770 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
771 GENERATED stack += -1;
775 GENERATED case ICMD_POP2:
776 GENERATED /* (11--|2--) */
777 GENERATED CHECK_STACK_DEPTH(2);
778 GENERATED /* may use stack[-1] ... stack[0] */
781 # line 679 "src/vm/jit/verify/icmds.cpp"
782 GENERATED /* we pop either 11 or 2 */
783 GENERATED if (IS_CAT1(stack[0]))
784 GENERATED CHECK_CAT1(stack[-1]);
786 # line 787 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
788 GENERATED stack += -2;
792 GENERATED case ICMD_DUP:
793 GENERATED /* (1--11) */
794 GENERATED CHECK_STACK_DEPTH(1);
795 GENERATED CHECK_STACK_SPACE(1);
797 # define DST (&(stack[0]))
798 GENERATED /* may use stack[0] ... stack[1] */
801 # line 694 "src/vm/jit/verify/icmds.cpp"
802 GENERATED /* we dup 1 */
803 GENERATED CHECK_CAT1(stack[0]);
805 GENERATED COPY_SLOT(stack[ 0], stack[ 1]);
807 # line 808 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
809 GENERATED stack += 1;
816 GENERATED case ICMD_DUP_X1:
817 GENERATED /* (11--111) */
818 GENERATED CHECK_STACK_DEPTH(2);
819 GENERATED CHECK_STACK_SPACE(1);
821 # define DST (&(stack[-1]))
822 GENERATED /* may use stack[-1] ... stack[1] */
825 # line 701 "src/vm/jit/verify/icmds.cpp"
826 GENERATED /* we dup 1 */
827 GENERATED CHECK_CAT1(stack[0]);
828 GENERATED /* we skip 1 */
829 GENERATED CHECK_CAT1(stack[-1]);
831 GENERATED COPY_SLOT(stack[ 0], stack[ 1]);
832 GENERATED COPY_SLOT(stack[-1], stack[ 0]);
833 GENERATED COPY_SLOT(stack[ 1], stack[-1]);
835 # line 836 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
837 GENERATED stack += 1;
844 GENERATED case ICMD_DUP_X2:
845 GENERATED /* (111--1111|21--121) */
846 GENERATED CHECK_STACK_DEPTH(3);
847 GENERATED CHECK_STACK_SPACE(1);
848 GENERATED /* may use stack[-2] ... stack[1] */
851 # line 712 "src/vm/jit/verify/icmds.cpp"
852 GENERATED /* we dup 1 */
853 GENERATED CHECK_CAT1(stack[0]);
854 GENERATED /* we skip either 11 or 2 */
855 GENERATED if (IS_CAT1(stack[-1]))
856 GENERATED CHECK_CAT1(stack[-2]);
858 GENERATED COPY_SLOT(stack[ 0], stack[ 1]);
859 GENERATED COPY_SLOT(stack[-1], stack[ 0]);
860 GENERATED COPY_SLOT(stack[-2], stack[-1]);
861 GENERATED COPY_SLOT(stack[ 1], stack[-2]);
863 # line 864 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
865 GENERATED stack += 1;
869 GENERATED case ICMD_DUP2:
870 GENERATED /* (11--1111|2--22) */
871 GENERATED CHECK_STACK_DEPTH(2);
872 GENERATED CHECK_STACK_SPACE(2);
873 GENERATED /* may use stack[-1] ... stack[2] */
876 # line 725 "src/vm/jit/verify/icmds.cpp"
877 GENERATED /* we dup either 11 or 2 */
878 GENERATED if (IS_CAT1(stack[0]))
879 GENERATED CHECK_CAT1(stack[-1]);
881 GENERATED COPY_SLOT(stack[ 0], stack[ 2]);
882 GENERATED COPY_SLOT(stack[-1], stack[ 1]);
884 # line 885 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
886 GENERATED stack += 2;
890 GENERATED case ICMD_DUP2_X1:
891 GENERATED /* (111--11111|12--212) */
892 GENERATED CHECK_STACK_DEPTH(3);
893 GENERATED CHECK_STACK_SPACE(2);
894 GENERATED /* may use stack[-2] ... stack[2] */
897 # line 734 "src/vm/jit/verify/icmds.cpp"
898 GENERATED /* we dup either 11 or 2 */
899 GENERATED if (IS_CAT1(stack[0]))
900 GENERATED CHECK_CAT1(stack[-1]);
901 GENERATED /* we skip 1 */
902 GENERATED CHECK_CAT1(stack[-2]);
904 GENERATED COPY_SLOT(stack[ 0], stack[ 2]);
905 GENERATED COPY_SLOT(stack[-1], stack[ 1]);
906 GENERATED COPY_SLOT(stack[-2], stack[ 0]);
907 GENERATED COPY_SLOT(stack[ 2], stack[-1]);
908 GENERATED COPY_SLOT(stack[ 1], stack[-2]);
910 # line 911 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
912 GENERATED stack += 2;
916 GENERATED case ICMD_DUP2_X2:
917 GENERATED /* (1111--111111|112--2112|22--222|211--11211) */
918 GENERATED CHECK_STACK_DEPTH(4);
919 GENERATED CHECK_STACK_SPACE(2);
920 GENERATED /* may use stack[-3] ... stack[2] */
923 # line 748 "src/vm/jit/verify/icmds.cpp"
924 GENERATED /* we dup either 11 or 2 */
925 GENERATED if (IS_CAT1(stack[0]))
926 GENERATED CHECK_CAT1(stack[-1]);
927 GENERATED /* we skip either 11 or 2 */
928 GENERATED if (IS_CAT1(stack[-2]))
929 GENERATED CHECK_CAT1(stack[-3]);
931 GENERATED COPY_SLOT(stack[ 0], stack[ 2]);
932 GENERATED COPY_SLOT(stack[-1], stack[ 1]);
933 GENERATED COPY_SLOT(stack[-2], stack[ 0]);
934 GENERATED COPY_SLOT(stack[-3], stack[-1]);
935 GENERATED COPY_SLOT(stack[ 2], stack[-2]);
936 GENERATED COPY_SLOT(stack[ 1], stack[-3]);
938 # line 939 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
940 GENERATED stack += 2;
944 GENERATED case ICMD_SWAP:
945 GENERATED /* (11--11) */
946 GENERATED CHECK_STACK_DEPTH(2);
948 # define DST (&(stack[-1]))
949 GENERATED /* may use stack[-1] ... stack[0] */
952 # line 685 "src/vm/jit/verify/icmds.cpp"
953 GENERATED CHECK_CAT1(stack[0]);
954 GENERATED CHECK_CAT1(stack[-1]);
956 GENERATED COPY_SLOT(stack[ 0], temp );
957 GENERATED COPY_SLOT(stack[-1], stack[ 0]);
958 GENERATED COPY_SLOT(temp , stack[-1]);
960 # line 961 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
968 GENERATED case ICMD_IADD:
969 GENERATED case ICMD_ISUB:
970 GENERATED case ICMD_IMUL:
971 GENERATED case ICMD_ISHL:
972 GENERATED case ICMD_ISHR:
973 GENERATED case ICMD_IUSHR:
974 GENERATED case ICMD_IAND:
975 GENERATED case ICMD_IOR:
976 GENERATED case ICMD_IXOR:
977 GENERATED /* (II--I) */
978 GENERATED CHECK_STACK_DEPTH(2);
979 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
980 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
981 GENERATED stack += -1;
985 GENERATED case ICMD_LADD:
986 GENERATED case ICMD_LSUB:
987 GENERATED case ICMD_LMUL:
988 GENERATED case ICMD_LAND:
989 GENERATED case ICMD_LOR:
990 GENERATED case ICMD_LXOR:
991 GENERATED /* (LL--L) */
992 GENERATED CHECK_STACK_DEPTH(4);
993 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_LNG);
994 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
995 GENERATED stack += -2;
999 GENERATED case ICMD_FADD:
1000 GENERATED case ICMD_FSUB:
1001 GENERATED case ICMD_FMUL:
1002 GENERATED case ICMD_FDIV:
1003 GENERATED case ICMD_FREM:
1004 GENERATED /* (FF--F) */
1005 GENERATED CHECK_STACK_DEPTH(2);
1006 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_FLT);
1007 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1008 GENERATED stack += -1;
1012 GENERATED case ICMD_DADD:
1013 GENERATED case ICMD_DSUB:
1014 GENERATED case ICMD_DMUL:
1015 GENERATED case ICMD_DDIV:
1016 GENERATED case ICMD_DREM:
1017 GENERATED /* (DD--D) */
1018 GENERATED CHECK_STACK_DEPTH(4);
1019 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_DBL);
1020 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1021 GENERATED stack += -2;
1025 GENERATED case ICMD_IDIV:
1026 GENERATED case ICMD_IREM:
1027 GENERATED /* (II--I) */
1028 GENERATED maythrow = true;
1029 GENERATED CHECK_STACK_DEPTH(2);
1030 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
1031 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1032 GENERATED stack += -1;
1036 GENERATED case ICMD_LDIV:
1037 GENERATED case ICMD_LREM:
1038 GENERATED /* (LL--L) */
1039 GENERATED maythrow = true;
1040 GENERATED CHECK_STACK_DEPTH(4);
1041 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_LNG);
1042 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1043 GENERATED stack += -2;
1047 GENERATED case ICMD_INEG:
1048 GENERATED case ICMD_INT2BYTE:
1049 GENERATED case ICMD_INT2CHAR:
1050 GENERATED case ICMD_INT2SHORT:
1051 GENERATED /* (I--I) */
1052 GENERATED CHECK_STACK_DEPTH(1);
1053 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1057 GENERATED case ICMD_LNEG:
1058 GENERATED /* (L--L) */
1059 GENERATED CHECK_STACK_DEPTH(2);
1060 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1064 GENERATED case ICMD_FNEG:
1065 GENERATED /* (F--F) */
1066 GENERATED CHECK_STACK_DEPTH(1);
1067 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1071 GENERATED case ICMD_DNEG:
1072 GENERATED /* (D--D) */
1073 GENERATED CHECK_STACK_DEPTH(2);
1074 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1078 GENERATED case ICMD_LSHL:
1079 GENERATED case ICMD_LSHR:
1080 GENERATED case ICMD_LUSHR:
1081 GENERATED /* (LI--L) */
1082 GENERATED CHECK_STACK_DEPTH(3);
1083 GENERATED CHECK_STACK_TYPE(stack[-2], TYPE_LNG);
1084 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1085 GENERATED stack += -1;
1089 GENERATED case ICMD_IINC:
1090 GENERATED /* (--) */
1091 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_INT);
1095 GENERATED case ICMD_I2L:
1096 GENERATED /* (I--L) */
1097 GENERATED CHECK_STACK_DEPTH(1);
1098 GENERATED CHECK_STACK_SPACE(1);
1099 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1100 GENERATED stack += 1;
1101 GENERATED stack[0].type = TYPE_VOID;
1102 GENERATED stack[-1].type = TYPE_LNG;
1106 GENERATED case ICMD_I2F:
1107 GENERATED /* (I--F) */
1108 GENERATED CHECK_STACK_DEPTH(1);
1109 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1110 GENERATED stack[0].type = TYPE_FLT;
1114 GENERATED case ICMD_I2D:
1115 GENERATED /* (I--D) */
1116 GENERATED CHECK_STACK_DEPTH(1);
1117 GENERATED CHECK_STACK_SPACE(1);
1118 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1119 GENERATED stack += 1;
1120 GENERATED stack[0].type = TYPE_VOID;
1121 GENERATED stack[-1].type = TYPE_DBL;
1125 GENERATED case ICMD_L2I:
1126 GENERATED /* (L--I) */
1127 GENERATED CHECK_STACK_DEPTH(2);
1128 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1129 GENERATED stack += -1;
1130 GENERATED stack[0].type = TYPE_INT;
1134 GENERATED case ICMD_L2F:
1135 GENERATED /* (L--F) */
1136 GENERATED CHECK_STACK_DEPTH(2);
1137 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1138 GENERATED stack += -1;
1139 GENERATED stack[0].type = TYPE_FLT;
1143 GENERATED case ICMD_L2D:
1144 GENERATED /* (L--D) */
1145 GENERATED CHECK_STACK_DEPTH(2);
1146 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1147 GENERATED stack[0].type = TYPE_VOID;
1148 GENERATED stack[-1].type = TYPE_DBL;
1152 GENERATED case ICMD_F2I:
1153 GENERATED /* (F--I) */
1154 GENERATED CHECK_STACK_DEPTH(1);
1155 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1156 GENERATED stack[0].type = TYPE_INT;
1160 GENERATED case ICMD_F2L:
1161 GENERATED /* (F--L) */
1162 GENERATED CHECK_STACK_DEPTH(1);
1163 GENERATED CHECK_STACK_SPACE(1);
1164 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1165 GENERATED stack += 1;
1166 GENERATED stack[0].type = TYPE_VOID;
1167 GENERATED stack[-1].type = TYPE_LNG;
1171 GENERATED case ICMD_F2D:
1172 GENERATED /* (F--D) */
1173 GENERATED CHECK_STACK_DEPTH(1);
1174 GENERATED CHECK_STACK_SPACE(1);
1175 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1176 GENERATED stack += 1;
1177 GENERATED stack[0].type = TYPE_VOID;
1178 GENERATED stack[-1].type = TYPE_DBL;
1182 GENERATED case ICMD_D2I:
1183 GENERATED /* (D--I) */
1184 GENERATED CHECK_STACK_DEPTH(2);
1185 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1186 GENERATED stack += -1;
1187 GENERATED stack[0].type = TYPE_INT;
1191 GENERATED case ICMD_D2L:
1192 GENERATED /* (D--L) */
1193 GENERATED CHECK_STACK_DEPTH(2);
1194 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1195 GENERATED stack[0].type = TYPE_VOID;
1196 GENERATED stack[-1].type = TYPE_LNG;
1200 GENERATED case ICMD_D2F:
1201 GENERATED /* (D--F) */
1202 GENERATED CHECK_STACK_DEPTH(2);
1203 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1204 GENERATED stack += -1;
1205 GENERATED stack[0].type = TYPE_FLT;
1209 GENERATED case ICMD_LCMP:
1210 GENERATED /* (LL--I) */
1211 GENERATED CHECK_STACK_DEPTH(4);
1212 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_LNG);
1213 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1214 GENERATED stack += -3;
1215 GENERATED stack[0].type = TYPE_INT;
1219 GENERATED case ICMD_FCMPL:
1220 GENERATED case ICMD_FCMPG:
1221 GENERATED /* (FF--I) */
1222 GENERATED CHECK_STACK_DEPTH(2);
1223 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_FLT);
1224 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1225 GENERATED stack += -1;
1226 GENERATED stack[0].type = TYPE_INT;
1230 GENERATED case ICMD_DCMPL:
1231 GENERATED case ICMD_DCMPG:
1232 GENERATED /* (DD--I) */
1233 GENERATED CHECK_STACK_DEPTH(4);
1234 GENERATED CHECK_STACK_TYPE(stack[-3], TYPE_DBL);
1235 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1236 GENERATED stack += -3;
1237 GENERATED stack[0].type = TYPE_INT;
1241 GENERATED case ICMD_IFEQ:
1242 GENERATED case ICMD_IFNE:
1243 GENERATED case ICMD_IFLT:
1244 GENERATED case ICMD_IFGE:
1245 GENERATED case ICMD_IFGT:
1246 GENERATED case ICMD_IFLE:
1247 GENERATED /* (I--) */
1248 GENERATED CHECK_STACK_DEPTH(1);
1249 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1250 GENERATED stack += -1;
1251 GENERATED /* CAUTION: stack pointer changed before custom code! */
1253 # define OP1 (&(stack[1]))
1254 GENERATED /* may use stack[1] ... stack[1] */
1257 # line 389 "src/vm/jit/verify/icmds.cpp"
1258 GENERATED /* {RESULTNOW} */
1259 GENERATED TYPECHECK_COUNT(stat_ins_branch);
1261 GENERATED /* propagate stack and variables to the target block */
1262 GENERATED REACH(IPTR->dst);
1264 # line 1265 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1272 GENERATED case ICMD_IF_ICMPEQ:
1273 GENERATED case ICMD_IF_ICMPNE:
1274 GENERATED case ICMD_IF_ICMPLT:
1275 GENERATED case ICMD_IF_ICMPGE:
1276 GENERATED case ICMD_IF_ICMPGT:
1277 GENERATED case ICMD_IF_ICMPLE:
1278 GENERATED /* (II--) */
1279 GENERATED CHECK_STACK_DEPTH(2);
1280 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_INT);
1281 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1282 GENERATED stack += -2;
1283 GENERATED /* CAUTION: stack pointer changed before custom code! */
1285 # define OP1 (&(stack[1]))
1287 # define OP2 (&(stack[2]))
1288 GENERATED /* may use stack[1] ... stack[2] */
1291 # line 395 "src/vm/jit/verify/icmds.cpp"
1292 GENERATED /* {RESULTNOW} */
1293 GENERATED TYPECHECK_COUNT(stat_ins_branch);
1295 GENERATED /* propagate stack and variables to the target block */
1296 GENERATED REACH(IPTR->dst);
1298 # line 1299 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1308 GENERATED case ICMD_IF_ACMPEQ:
1309 GENERATED case ICMD_IF_ACMPNE:
1310 GENERATED /* (AA--) */
1311 GENERATED CHECK_STACK_DEPTH(2);
1312 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
1313 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1314 GENERATED stack += -2;
1315 GENERATED /* CAUTION: stack pointer changed before custom code! */
1317 # define OP1 (&(stack[1]))
1319 # define OP2 (&(stack[2]))
1320 GENERATED /* may use stack[1] ... stack[2] */
1323 # line 401 "src/vm/jit/verify/icmds.cpp"
1324 GENERATED /* {RESULTNOW} */
1325 GENERATED TYPECHECK_COUNT(stat_ins_branch);
1327 GENERATED /* propagate stack and variables to the target block */
1328 GENERATED REACH(IPTR->dst);
1330 # line 1331 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1340 GENERATED case ICMD_GOTO:
1341 GENERATED /* (--) */
1342 GENERATED superblockend = true;
1345 # line 386 "src/vm/jit/verify/icmds.cpp"
1346 GENERATED /* {RESULTNOW} */
1347 GENERATED TYPECHECK_COUNT(stat_ins_branch);
1349 GENERATED /* propagate stack and variables to the target block */
1350 GENERATED REACH(IPTR->dst);
1352 # line 1353 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1357 GENERATED case ICMD_JSR:
1358 GENERATED /* (--R) */
1359 GENERATED superblockend = true;
1360 GENERATED CHECK_STACK_SPACE(1);
1361 GENERATED stack += 1;
1362 GENERATED stack[0].type = TYPE_RET;
1363 GENERATED /* CAUTION: stack types changed before custom code! */
1364 GENERATED /* CAUTION: stack pointer changed before custom code! */
1366 # define DST (&(stack[0]))
1367 GENERATED /* may use stack[0] ... stack[0] */
1370 # line 556 "src/vm/jit/verify/icmds.cpp"
1371 GENERATED /* {RESULTNOW} */
1372 GENERATED tbptr = IPTR->sx.s23.s3.jsrtarget.block;
1374 GENERATED TYPEINFO_INIT_RETURNADDRESS(stack[0].typeinfo, tbptr);
1375 GENERATED REACH_BLOCK(tbptr);
1377 GENERATED stack = typecheck_stackbased_jsr(STATE, stack, stackfloor);
1378 GENERATED if (stack == NULL)
1379 GENERATED EXCEPTION;
1381 # line 1382 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1389 GENERATED case ICMD_RET:
1390 GENERATED /* (--) */
1391 GENERATED superblockend = true;
1394 # line 577 "src/vm/jit/verify/icmds.cpp"
1395 GENERATED /* {RESULTNOW} */
1396 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_RET);
1397 GENERATED if (!TYPEINFO_IS_PRIMITIVE(STATE->locals[IPTR->s1.varindex].typeinfo))
1398 GENERATED VERIFY_ERROR("illegal instruction: RET using non-returnAddress variable");
1400 GENERATED if (!typecheck_stackbased_ret(STATE, stack, stackfloor))
1401 GENERATED EXCEPTION;
1403 # line 1404 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1408 GENERATED case ICMD_TABLESWITCH:
1409 GENERATED /* (I--) */
1410 GENERATED superblockend = true;
1411 GENERATED CHECK_STACK_DEPTH(1);
1412 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1413 GENERATED stack += -1;
1414 GENERATED /* CAUTION: stack pointer changed before custom code! */
1416 # define OP1 (&(stack[1]))
1417 GENERATED /* may use stack[1] ... stack[1] */
1420 # line 427 "src/vm/jit/verify/icmds.cpp"
1421 GENERATED /* {RESULTNOW} */
1422 GENERATED TYPECHECK_COUNT(stat_ins_switch);
1424 GENERATED table = IPTR->dst.table;
1425 GENERATED i = IPTR->sx.s23.s3.tablehigh
1426 GENERATED - IPTR->sx.s23.s2.tablelow + 1 + 1; /* plus default */
1428 GENERATED while (--i >= 0) {
1429 GENERATED REACH(*table);
1433 GENERATED LOG("switch done");
1435 # line 1436 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1443 GENERATED case ICMD_LOOKUPSWITCH:
1444 GENERATED /* (I--) */
1445 GENERATED superblockend = true;
1446 GENERATED CHECK_STACK_DEPTH(1);
1447 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1448 GENERATED stack += -1;
1449 GENERATED /* CAUTION: stack pointer changed before custom code! */
1451 # define OP1 (&(stack[1]))
1452 GENERATED /* may use stack[1] ... stack[1] */
1455 # line 443 "src/vm/jit/verify/icmds.cpp"
1456 GENERATED /* {RESULTNOW} */
1457 GENERATED TYPECHECK_COUNT(stat_ins_switch);
1459 GENERATED lookup = IPTR->dst.lookup;
1460 GENERATED i = IPTR->sx.s23.s2.lookupcount;
1461 GENERATED REACH(IPTR->sx.s23.s3.lookupdefault);
1463 GENERATED while (--i >= 0) {
1464 GENERATED REACH(lookup->target);
1468 GENERATED LOG("switch done");
1470 # line 1471 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1478 GENERATED case ICMD_IRETURN:
1479 GENERATED /* (I--) */
1480 GENERATED superblockend = true;
1481 GENERATED CHECK_STACK_DEPTH(1);
1482 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_INT);
1484 # define OP1 (&(stack[0]))
1485 GENERATED /* may use stack[0] ... stack[0] */
1488 # line 509 "src/vm/jit/verify/icmds.cpp"
1489 GENERATED if (STATE->returntype.type != TYPE_INT)
1490 GENERATED VERIFY_ERROR("Return type mismatch");
1492 # line 1493 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1494 GENERATED goto return_tail;
1500 GENERATED case ICMD_LRETURN:
1501 GENERATED /* (L--) */
1502 GENERATED superblockend = true;
1503 GENERATED CHECK_STACK_DEPTH(2);
1504 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_LNG);
1506 # define OP1 (&(stack[-1]))
1507 GENERATED /* may use stack[-1] ... stack[0] */
1510 # line 514 "src/vm/jit/verify/icmds.cpp"
1511 GENERATED if (STATE->returntype.type != TYPE_LNG)
1512 GENERATED VERIFY_ERROR("Return type mismatch");
1514 # line 1515 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1516 GENERATED goto return_tail;
1522 GENERATED case ICMD_FRETURN:
1523 GENERATED /* (F--) */
1524 GENERATED superblockend = true;
1525 GENERATED CHECK_STACK_DEPTH(1);
1526 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_FLT);
1528 # define OP1 (&(stack[0]))
1529 GENERATED /* may use stack[0] ... stack[0] */
1532 # line 519 "src/vm/jit/verify/icmds.cpp"
1533 GENERATED if (STATE->returntype.type != TYPE_FLT)
1534 GENERATED VERIFY_ERROR("Return type mismatch");
1536 # line 1537 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1538 GENERATED goto return_tail;
1544 GENERATED case ICMD_DRETURN:
1545 GENERATED /* (D--) */
1546 GENERATED superblockend = true;
1547 GENERATED CHECK_STACK_DEPTH(2);
1548 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_DBL);
1550 # define OP1 (&(stack[-1]))
1551 GENERATED /* may use stack[-1] ... stack[0] */
1554 # line 524 "src/vm/jit/verify/icmds.cpp"
1555 GENERATED if (STATE->returntype.type != TYPE_DBL)
1556 GENERATED VERIFY_ERROR("Return type mismatch");
1558 # line 1559 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1560 GENERATED goto return_tail;
1566 GENERATED case ICMD_ARETURN:
1567 GENERATED /* (A--) */
1568 GENERATED maythrow = true;
1569 GENERATED superblockend = true;
1570 GENERATED CHECK_STACK_DEPTH(1);
1571 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1573 # define OP1 (&(stack[0]))
1574 GENERATED /* may use stack[0] ... stack[0] */
1577 # line 484 "src/vm/jit/verify/icmds.cpp"
1578 GENERATED TYPECHECK_COUNT(stat_ins_areturn);
1579 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
1580 GENERATED VERIFY_ERROR("illegal instruction: ARETURN on non-reference");
1582 GENERATED if (STATE->returntype.type != TYPE_ADR
1583 GENERATED || (r = typeinfo_is_assignable(&OP1->typeinfo,&(STATE->returntype.typeinfo)))
1584 GENERATED == typecheck_FALSE)
1585 GENERATED VERIFY_ERROR("Return type mismatch");
1586 GENERATED if (r == typecheck_FAIL)
1587 GENERATED EXCEPTION;
1588 GENERATED if (r == typecheck_MAYBE) {
1589 GENERATED /* the check has to be postponed, we need a patcher */
1590 GENERATED TYPECHECK_COUNT(stat_ins_areturn_unresolved);
1591 GENERATED IPTR->sx.s23.s2.uc = create_unresolved_class(
1593 GENERATED METHOD->parseddesc->returntype.classref,
1594 GENERATED &OP1->typeinfo);
1595 GENERATED IPTR->flags.bits |= INS_FLAG_UNRESOLVED;
1598 # line 1599 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1600 GENERATED goto return_tail;
1606 GENERATED case ICMD_RETURN:
1607 GENERATED /* (--) */
1608 GENERATED superblockend = true;
1611 # line 529 "src/vm/jit/verify/icmds.cpp"
1612 GENERATED if (STATE->returntype.type != TYPE_VOID)
1613 GENERATED VERIFY_ERROR("Return type mismatch");
1615 GENERATED return_tail:
1616 GENERATED TYPECHECK_COUNT(stat_ins_primitive_return);
1618 GENERATED if (STATE->initmethod && METHOD->clazz != class_java_lang_Object) {
1619 GENERATED /* Check if the 'this' instance has been initialized. */
1620 GENERATED LOG("Checking <init> marker");
1622 # if defined(TYPECHECK_VARIABLESBASED)
1623 GENERATED if (!typevector_checktype(jd->var,STATE->numlocals-1,TYPE_INT))
1626 GENERATED if (STATE->locals[STATE->numlocals-1].type != TYPE_INT)
1629 GENERATED VERIFY_ERROR("<init> method does not initialize 'this'");
1632 # line 1633 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1637 GENERATED case ICMD_GETSTATIC:
1638 GENERATED /* (--1|--2) */
1639 GENERATED maythrow = true;
1640 GENERATED /* variable number of outslots! */
1643 # line 154 "src/vm/jit/verify/icmds.cpp"
1644 GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, NULL, NULL, stack);
1645 GENERATED if (stack == NULL)
1646 GENERATED EXCEPTION;
1648 # line 1649 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1653 GENERATED case ICMD_PUTSTATIC:
1654 GENERATED /* (1--|2--) */
1655 GENERATED maythrow = true;
1656 GENERATED /* variable number of inslots! */
1659 # line 136 "src/vm/jit/verify/icmds.cpp"
1660 GENERATED CHECK_STACK_DEPTH(1);
1661 GENERATED if (!IS_CAT1(stack[0])) {
1662 GENERATED /* (stack depth >= 2 is guaranteed) */
1663 GENERATED stack -= 1;
1665 GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, NULL, stack, stack-1);
1666 GENERATED if (stack == NULL)
1667 GENERATED EXCEPTION;
1669 # line 1670 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1674 GENERATED case ICMD_GETFIELD:
1675 GENERATED /* (A--1|A--2) */
1676 GENERATED maythrow = true;
1677 GENERATED CHECK_STACK_DEPTH(1);
1678 GENERATED /* variable number of outslots! */
1681 # line 147 "src/vm/jit/verify/icmds.cpp"
1682 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1683 GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, stack, NULL, stack-1);
1684 GENERATED if (stack == NULL)
1685 GENERATED EXCEPTION;
1687 # line 1688 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1692 GENERATED case ICMD_PUTFIELD:
1693 GENERATED /* (A1--|A2--) */
1694 GENERATED maythrow = true;
1695 GENERATED /* variable number of inslots! */
1698 # line 124 "src/vm/jit/verify/icmds.cpp"
1699 GENERATED CHECK_STACK_DEPTH(2);
1700 GENERATED if (!IS_CAT1(stack[0])) {
1701 GENERATED CHECK_STACK_DEPTH(3);
1702 GENERATED stack -= 1;
1704 GENERATED CHECK_STACK_TYPE(stack[-1], TYPE_ADR);
1705 GENERATED stack = typecheck_stackbased_verify_fieldaccess(STATE, stack-1, stack, stack-2);
1706 GENERATED if (stack == NULL)
1707 GENERATED EXCEPTION;
1709 # line 1710 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1714 GENERATED case ICMD_INVOKEVIRTUAL:
1715 GENERATED case ICMD_INVOKESPECIAL:
1716 GENERATED case ICMD_INVOKESTATIC:
1717 GENERATED case ICMD_INVOKEINTERFACE:
1718 GENERATED /* (.--1|.--2|.--) */
1719 GENERATED maythrow = true;
1720 GENERATED /* variable number of inslots! */
1721 GENERATED /* variable number of outslots! */
1724 # line 600 "src/vm/jit/verify/icmds.cpp"
1725 GENERATED TYPECHECK_COUNT(stat_ins_invoke);
1727 GENERATED INSTRUCTION_GET_METHODDESC(IPTR, md);
1728 GENERATED CHECK_STACK_DEPTH(md->paramslots);
1730 GENERATED if (!typecheck_stackbased_verify_invocation(STATE, stack, stackfloor))
1731 GENERATED EXCEPTION;
1733 GENERATED stack -= md->paramslots;
1735 GENERATED if (md->returntype.type != TYPE_VOID) {
1736 GENERATED if (IS_2_WORD_TYPE(md->returntype.type)) {
1737 GENERATED CHECK_STACK_SPACE(2);
1738 GENERATED stack += 2;
1739 GENERATED stack[0].type = TYPE_VOID;
1740 GENERATED stack[-1].type = md->returntype.type;
1743 GENERATED CHECK_STACK_SPACE(1);
1744 GENERATED stack += 1;
1745 GENERATED stack[0].type = md->returntype.type;
1748 GENERATED TYPECHECK_COUNTIF(INSTRUCTION_IS_UNRESOLVED(IPTR), stat_ins_invoke_unresolved);
1750 # line 1751 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1755 GENERATED case ICMD_ARRAYLENGTH:
1756 GENERATED /* (A--I) */
1757 GENERATED maythrow = true;
1758 GENERATED CHECK_STACK_DEPTH(1);
1759 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1761 # define OP1 (&(stack[0]))
1763 # define DST (&(stack[0]))
1764 GENERATED /* may use stack[0] ... stack[0] */
1767 # line 229 "src/vm/jit/verify/icmds.cpp"
1768 GENERATED if (!TYPEINFO_MAYBE_ARRAY(OP1->typeinfo)
1769 GENERATED && OP1->typeinfo.typeclass.cls != pseudo_class_Arraystub)
1770 GENERATED VERIFY_ERROR("illegal instruction: ARRAYLENGTH on non-array");
1772 # line 1773 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1774 GENERATED stack[0].type = TYPE_INT;
1783 GENERATED case ICMD_ATHROW:
1784 GENERATED /* (A--) */
1785 GENERATED maythrow = true;
1786 GENERATED superblockend = true;
1787 GENERATED CHECK_STACK_DEPTH(1);
1788 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1790 # define OP1 (&(stack[0]))
1791 GENERATED /* may use stack[0] ... stack[0] */
1794 # line 463 "src/vm/jit/verify/icmds.cpp"
1795 GENERATED TYPECHECK_COUNT(stat_ins_athrow);
1796 GENERATED r = typeinfo_is_assignable_to_class(&OP1->typeinfo,
1797 GENERATED CLASSREF_OR_CLASSINFO(class_java_lang_Throwable));
1798 GENERATED if (r == typecheck_FALSE)
1799 GENERATED VERIFY_ERROR("illegal instruction: ATHROW on non-Throwable");
1800 GENERATED if (r == typecheck_FAIL)
1801 GENERATED EXCEPTION;
1802 GENERATED if (r == typecheck_MAYBE) {
1803 GENERATED /* the check has to be postponed. we need a patcher */
1804 GENERATED TYPECHECK_COUNT(stat_ins_athrow_unresolved);
1805 GENERATED IPTR->sx.s23.s2.uc = create_unresolved_class(
1807 GENERATED /* XXX make this more efficient, use class_java_lang_Throwable
1808 GENERATED * directly */
1809 GENERATED class_get_classref(METHOD->clazz,utf_java_lang_Throwable),
1810 GENERATED &OP1->typeinfo);
1811 GENERATED IPTR->flags.bits |= INS_FLAG_UNRESOLVED;
1814 # line 1815 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1816 GENERATED stack += -1;
1823 GENERATED case ICMD_CHECKCAST:
1824 GENERATED /* (A--A) */
1825 GENERATED maythrow = true;
1826 GENERATED CHECK_STACK_DEPTH(1);
1827 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1829 # define OP1 (&(stack[0]))
1831 # define DST (&(stack[0]))
1832 GENERATED /* may use stack[0] ... stack[0] */
1835 # line 363 "src/vm/jit/verify/icmds.cpp"
1837 # if !defined(TYPECHECK_TYPEINFERER)
1838 GENERATED /* returnAddress is not allowed */
1839 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
1840 GENERATED VERIFY_ERROR("Illegal instruction: CHECKCAST on non-reference");
1844 GENERATED /* XXX only if narrower */
1845 GENERATED if (!typeinfo_init_class(&(DST->typeinfo),IPTR->sx.s23.s3.c))
1846 GENERATED EXCEPTION;
1848 # line 1849 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1858 GENERATED case ICMD_INSTANCEOF:
1859 GENERATED /* (A--I) */
1860 GENERATED maythrow = true;
1861 GENERATED CHECK_STACK_DEPTH(1);
1862 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1864 # define OP1 (&(stack[0]))
1866 # define DST (&(stack[0]))
1867 GENERATED /* may use stack[0] ... stack[0] */
1870 # line 375 "src/vm/jit/verify/icmds.cpp"
1871 GENERATED /* returnAddress is not allowed */
1872 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
1873 GENERATED VERIFY_ERROR("Illegal instruction: INSTANCEOF on non-reference");
1875 GENERATED /* XXX should propagate type information to the following if-branches */
1877 # line 1878 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1879 GENERATED stack[0].type = TYPE_INT;
1888 GENERATED case ICMD_MULTIANEWARRAY:
1889 GENERATED /* (.--A) */
1890 GENERATED maythrow = true;
1891 GENERATED /* variable number of inslots! */
1894 # line 638 "src/vm/jit/verify/icmds.cpp"
1895 GENERATED if (!typecheck_stackbased_multianewarray(STATE, stack, stackfloor))
1896 GENERATED EXCEPTION;
1897 GENERATED stack -= (IPTR->s1.argcount - 1);
1898 GENERATED stack[0].type = TYPE_ADR;
1900 # line 1901 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1905 GENERATED case ICMD_IFNULL:
1906 GENERATED case ICMD_IFNONNULL:
1907 GENERATED /* (A--) */
1908 GENERATED CHECK_STACK_DEPTH(1);
1909 GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR);
1910 GENERATED stack += -1;
1911 GENERATED /* CAUTION: stack pointer changed before custom code! */
1913 # define OP1 (&(stack[1]))
1914 GENERATED /* may use stack[1] ... stack[1] */
1917 # line 387 "src/vm/jit/verify/icmds.cpp"
1918 GENERATED /* {RESULTNOW} */
1919 GENERATED TYPECHECK_COUNT(stat_ins_branch);
1921 GENERATED /* propagate stack and variables to the target block */
1922 GENERATED REACH(IPTR->dst);
1924 # line 1925 "src/vm/jit/verify/typecheck-stackbased-gen.inc"
1932 GENERATED case ICMD_BUILTIN:
1933 GENERATED /* (.--1|.--2|.--) */
1934 GENERATED maythrow = true;
1935 GENERATED /* variable number of inslots! */
1936 GENERATED /* variable number of outslots! */
1939 # line 654 "src/vm/jit/verify/icmds.cpp"
1940 GENERATED TYPECHECK_COUNT(stat_ins_builtin);
1941 GENERATED if (!typecheck_stackbased_verify_builtin(STATE, stack, stackfloor))
1942 GENERATED EXCEPTION;
1944 GENERATED /* pop operands and push return value */
1946 GENERATED u1 rtype = IPTR->sx.s23.s3.bte->md->returntype.type;
1947 GENERATED stack -= IPTR->sx.s23.s3.bte->md->paramslots;
1948 GENERATED if (rtype != TYPE_VOID) {
1949 GENERATED if (IS_2_WORD_TYPE(rtype))
1950 GENERATED stack += 2;
1952 GENERATED stack += 1;
1956 # line 1957 "src/vm/jit/verify/typecheck-stackbased-gen.inc"