3 GENERATED case ICMD_NOP:
4 GENERATED case ICMD_INLINE_START:
5 GENERATED case ICMD_INLINE_END:
6 GENERATED case ICMD_INLINE_BODY:
11 GENERATED case ICMD_ACONST:
13 GENERATED maythrow = true;
15 # define DST VAROP(iptr->dst)
18 # line 347 "src/vm/jit/verify/icmds.c"
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-variablesbased-gen.inc"
34 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
41 GENERATED case ICMD_CHECKNULL:
42 GENERATED /* (A--A) */
43 GENERATED maythrow = true;
44 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
48 GENERATED case ICMD_ICONST:
49 GENERATED case ICMD_IDIVPOW2:
50 GENERATED case ICMD_LCMPCONST:
51 GENERATED case ICMD_IADDCONST:
52 GENERATED case ICMD_ISUBCONST:
53 GENERATED case ICMD_IMULCONST:
54 GENERATED case ICMD_IANDCONST:
55 GENERATED case ICMD_IORCONST:
56 GENERATED case ICMD_IXORCONST:
57 GENERATED case ICMD_ISHLCONST:
58 GENERATED case ICMD_ISHRCONST:
59 GENERATED case ICMD_IUSHRCONST:
60 GENERATED case ICMD_IREMPOW2:
61 GENERATED case ICMD_IADD:
62 GENERATED case ICMD_ISUB:
63 GENERATED case ICMD_IMUL:
64 GENERATED case ICMD_INEG:
65 GENERATED case ICMD_ISHL:
66 GENERATED case ICMD_ISHR:
67 GENERATED case ICMD_IUSHR:
68 GENERATED case ICMD_IAND:
69 GENERATED case ICMD_IOR:
70 GENERATED case ICMD_IXOR:
71 GENERATED case ICMD_L2I:
72 GENERATED case ICMD_F2I:
73 GENERATED case ICMD_D2I:
74 GENERATED case ICMD_INT2BYTE:
75 GENERATED case ICMD_INT2CHAR:
76 GENERATED case ICMD_INT2SHORT:
77 GENERATED case ICMD_LCMP:
78 GENERATED case ICMD_FCMPL:
79 GENERATED case ICMD_FCMPG:
80 GENERATED case ICMD_DCMPL:
81 GENERATED case ICMD_DCMPG:
82 GENERATED case ICMD_IMULPOW2:
83 GENERATED /* (--I), (I--I), (L--I), (II--I), (F--I), (D--I), (LL--I), (FF--I), (DD--I) */
84 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
88 GENERATED case ICMD_LDIVPOW2:
89 GENERATED case ICMD_LCONST:
90 GENERATED case ICMD_LADDCONST:
91 GENERATED case ICMD_LSUBCONST:
92 GENERATED case ICMD_LMULCONST:
93 GENERATED case ICMD_LANDCONST:
94 GENERATED case ICMD_LORCONST:
95 GENERATED case ICMD_LXORCONST:
96 GENERATED case ICMD_LSHLCONST:
97 GENERATED case ICMD_LSHRCONST:
98 GENERATED case ICMD_LUSHRCONST:
99 GENERATED case ICMD_LREMPOW2:
100 GENERATED case ICMD_LADD:
101 GENERATED case ICMD_LSUB:
102 GENERATED case ICMD_LMUL:
103 GENERATED case ICMD_LNEG:
104 GENERATED case ICMD_LSHL:
105 GENERATED case ICMD_LSHR:
106 GENERATED case ICMD_LUSHR:
107 GENERATED case ICMD_LAND:
108 GENERATED case ICMD_LOR:
109 GENERATED case ICMD_LXOR:
110 GENERATED case ICMD_I2L:
111 GENERATED case ICMD_F2L:
112 GENERATED case ICMD_D2L:
113 GENERATED case ICMD_LMULPOW2:
114 GENERATED /* (L--L), (--L), (LL--L), (LI--L), (I--L), (F--L), (D--L) */
115 GENERATED VAROP(iptr->dst)->type = TYPE_LNG;
119 GENERATED case ICMD_FCONST:
120 GENERATED case ICMD_FADD:
121 GENERATED case ICMD_FSUB:
122 GENERATED case ICMD_FMUL:
123 GENERATED case ICMD_FDIV:
124 GENERATED case ICMD_FREM:
125 GENERATED case ICMD_FNEG:
126 GENERATED case ICMD_I2F:
127 GENERATED case ICMD_L2F:
128 GENERATED case ICMD_D2F:
129 GENERATED /* (--F), (FF--F), (F--F), (I--F), (L--F), (D--F) */
130 GENERATED VAROP(iptr->dst)->type = TYPE_FLT;
134 GENERATED case ICMD_DCONST:
135 GENERATED case ICMD_DADD:
136 GENERATED case ICMD_DSUB:
137 GENERATED case ICMD_DMUL:
138 GENERATED case ICMD_DDIV:
139 GENERATED case ICMD_DREM:
140 GENERATED case ICMD_DNEG:
141 GENERATED case ICMD_I2D:
142 GENERATED case ICMD_L2D:
143 GENERATED case ICMD_F2D:
144 GENERATED /* (--D), (DD--D), (D--D), (I--D), (L--D), (F--D) */
145 GENERATED VAROP(iptr->dst)->type = TYPE_DBL;
149 GENERATED case ICMD_COPY:
150 GENERATED /* (1--1) */
152 # define OP1 VAROP(iptr->s1)
154 # define DST VAROP(iptr->dst)
157 # line 82 "src/vm/jit/verify/icmds.c"
158 GENERATED TYPECHECK_COUNT(stat_ins_stack);
159 GENERATED COPYTYPE(IPTR->s1, IPTR->dst);
160 GENERATED DST->type = OP1->type;
162 # line 163 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
172 GENERATED case ICMD_MOVE:
173 GENERATED /* (1--1) */
175 # define OP1 VAROP(iptr->s1)
177 # define DST VAROP(iptr->dst)
180 # line 81 "src/vm/jit/verify/icmds.c"
181 GENERATED TYPECHECK_COUNT(stat_ins_stack);
182 GENERATED COPYTYPE(IPTR->s1, IPTR->dst);
183 GENERATED DST->type = OP1->type;
185 # line 186 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
195 GENERATED case ICMD_ILOAD:
196 GENERATED /* (--I) */
197 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_INT);
198 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
202 GENERATED case ICMD_LLOAD:
203 GENERATED /* (--L) */
204 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_LNG);
205 GENERATED VAROP(iptr->dst)->type = TYPE_LNG;
209 GENERATED case ICMD_FLOAD:
210 GENERATED /* (--F) */
211 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_FLT);
212 GENERATED VAROP(iptr->dst)->type = TYPE_FLT;
216 GENERATED case ICMD_DLOAD:
217 GENERATED /* (--D) */
218 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_DBL);
219 GENERATED VAROP(iptr->dst)->type = TYPE_DBL;
223 GENERATED case ICMD_ALOAD:
224 GENERATED /* (--A) */
225 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_ADR);
227 # define OP1 VAROP(IPTR->s1)
229 # define DST VAROP(iptr->dst)
232 # line 91 "src/vm/jit/verify/icmds.c"
233 GENERATED TYPECHECK_COUNT(stat_ins_aload);
236 # if !defined(TYPECHECK_TYPEINFERER)
237 GENERATED /* loading a returnAddress is not allowed */
238 GENERATED if (!TYPEDESC_IS_REFERENCE(*OP1)) {
239 GENERATED VERIFY_ERROR("illegal instruction: ALOAD loading non-reference");
243 GENERATED TYPEINFO_COPY(OP1->typeinfo,DST->typeinfo);
245 # line 246 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
247 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
256 GENERATED case ICMD_IALOAD:
257 GENERATED /* (AI--I) */
258 GENERATED maythrow = true;
260 # define OP1 VAROP(iptr->s1)
262 # define DST VAROP(iptr->dst)
265 # line 258 "src/vm/jit/verify/icmds.c"
266 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT))
267 GENERATED VERIFY_ERROR("Array type mismatch");
269 # line 270 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
271 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
280 GENERATED case ICMD_LALOAD:
281 GENERATED /* (AI--L) */
282 GENERATED maythrow = true;
284 # define OP1 VAROP(iptr->s1)
286 # define DST VAROP(iptr->dst)
289 # line 268 "src/vm/jit/verify/icmds.c"
290 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG))
291 GENERATED VERIFY_ERROR("Array type mismatch");
293 # line 294 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
295 GENERATED VAROP(iptr->dst)->type = TYPE_LNG;
304 GENERATED case ICMD_FALOAD:
305 GENERATED /* (AI--F) */
306 GENERATED maythrow = true;
308 # define OP1 VAROP(iptr->s1)
310 # define DST VAROP(iptr->dst)
313 # line 253 "src/vm/jit/verify/icmds.c"
314 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT))
315 GENERATED VERIFY_ERROR("Array type mismatch");
317 # line 318 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
319 GENERATED VAROP(iptr->dst)->type = TYPE_FLT;
328 GENERATED case ICMD_DALOAD:
329 GENERATED /* (AI--D) */
330 GENERATED maythrow = true;
332 # define OP1 VAROP(iptr->s1)
334 # define DST VAROP(iptr->dst)
337 # line 248 "src/vm/jit/verify/icmds.c"
338 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE))
339 GENERATED VERIFY_ERROR("Array type mismatch");
341 # line 342 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
343 GENERATED VAROP(iptr->dst)->type = TYPE_DBL;
352 GENERATED case ICMD_AALOAD:
353 GENERATED /* (AI--A) */
354 GENERATED maythrow = true;
356 # define OP1 VAROP(iptr->s1)
358 # define DST VAROP(iptr->dst)
361 # line 113 "src/vm/jit/verify/icmds.c"
363 # if !defined(TYPECHECK_TYPEINFERER)
364 GENERATED if (!TYPEINFO_MAYBE_ARRAY_OF_REFS(OP1->typeinfo))
365 GENERATED VERIFY_ERROR("illegal instruction: AALOAD on non-reference array");
369 GENERATED if (!typeinfo_init_component(&OP1->typeinfo,&DST->typeinfo))
372 # line 373 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
374 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
383 GENERATED case ICMD_BALOAD:
384 GENERATED /* (AI--I) */
385 GENERATED maythrow = true;
387 # define OP1 VAROP(iptr->s1)
389 # define DST VAROP(iptr->dst)
392 # line 237 "src/vm/jit/verify/icmds.c"
393 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BOOLEAN)
394 GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE))
395 GENERATED VERIFY_ERROR("Array type mismatch");
397 # line 398 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
399 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
408 GENERATED case ICMD_CALOAD:
409 GENERATED /* (AI--I) */
410 GENERATED maythrow = true;
412 # define OP1 VAROP(iptr->s1)
414 # define DST VAROP(iptr->dst)
417 # line 243 "src/vm/jit/verify/icmds.c"
418 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR))
419 GENERATED VERIFY_ERROR("Array type mismatch");
421 # line 422 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
423 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
432 GENERATED case ICMD_SALOAD:
433 GENERATED /* (AI--I) */
434 GENERATED maythrow = true;
436 # define OP1 VAROP(iptr->s1)
438 # define DST VAROP(iptr->dst)
441 # line 263 "src/vm/jit/verify/icmds.c"
442 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT))
443 GENERATED VERIFY_ERROR("Array type mismatch");
445 # line 446 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
447 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
456 GENERATED case ICMD_ISTORE:
457 GENERATED /* (I--) */
458 GENERATED STORE_LOCAL(TYPE_INT, IPTR->dst.varindex);
462 GENERATED case ICMD_LSTORE:
463 GENERATED /* (L--) */
464 GENERATED STORE_LOCAL_2_WORD(TYPE_LNG, IPTR->dst.varindex);
468 GENERATED case ICMD_FSTORE:
469 GENERATED /* (F--) */
470 GENERATED STORE_LOCAL(TYPE_FLT, IPTR->dst.varindex);
474 GENERATED case ICMD_DSTORE:
475 GENERATED /* (D--) */
476 GENERATED STORE_LOCAL_2_WORD(TYPE_DBL, IPTR->dst.varindex);
480 GENERATED case ICMD_ASTORE:
481 GENERATED /* (A--|R--) */
482 GENERATED STORE_LOCAL(VAROP(iptr->s1)->type, IPTR->dst.varindex);
484 # define DST VAROP(IPTR->dst)
486 # define OP1 VAROP(iptr->s1)
489 # line 106 "src/vm/jit/verify/icmds.c"
490 GENERATED TYPEINFO_COPY(OP1->typeinfo, DST->typeinfo);
492 # line 493 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
502 GENERATED case ICMD_IF_LEQ:
503 GENERATED case ICMD_IF_LNE:
504 GENERATED case ICMD_IF_LLT:
505 GENERATED case ICMD_IF_LGE:
506 GENERATED case ICMD_IF_LGT:
507 GENERATED case ICMD_IF_LLE:
508 GENERATED case ICMD_IF_LCMPEQ:
509 GENERATED case ICMD_IF_LCMPNE:
510 GENERATED case ICMD_IF_LCMPLT:
511 GENERATED case ICMD_IF_LCMPGE:
512 GENERATED case ICMD_IF_LCMPGT:
513 GENERATED case ICMD_IF_LCMPLE:
514 GENERATED case ICMD_IFEQ:
515 GENERATED case ICMD_IFNE:
516 GENERATED case ICMD_IFLT:
517 GENERATED case ICMD_IFGE:
518 GENERATED case ICMD_IFGT:
519 GENERATED case ICMD_IFLE:
520 GENERATED case ICMD_IF_ICMPEQ:
521 GENERATED case ICMD_IF_ICMPNE:
522 GENERATED case ICMD_IF_ICMPLT:
523 GENERATED case ICMD_IF_ICMPGE:
524 GENERATED case ICMD_IF_ICMPGT:
525 GENERATED case ICMD_IF_ICMPLE:
526 GENERATED case ICMD_IF_ACMPEQ:
527 GENERATED case ICMD_IF_ACMPNE:
528 GENERATED case ICMD_IFNULL:
529 GENERATED case ICMD_IFNONNULL:
530 GENERATED /* (L--), (LL--), (I--), (II--), (AA--), (A--) */
532 # define OP1 VAROP(iptr->s1)
535 # line 406 "src/vm/jit/verify/icmds.c"
536 GENERATED /* {RESULTNOW} */
537 GENERATED TYPECHECK_COUNT(stat_ins_branch);
539 GENERATED /* propagate stack and variables to the target block */
540 GENERATED REACH(IPTR->dst);
542 # line 543 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
550 GENERATED case ICMD_IASTORE:
551 GENERATED /* (AII--) */
552 GENERATED maythrow = true;
554 # define OP1 VAROP(iptr->s1)
557 # line 294 "src/vm/jit/verify/icmds.c"
558 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT))
559 GENERATED VERIFY_ERROR("Array type mismatch");
561 # line 562 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
569 GENERATED case ICMD_LASTORE:
570 GENERATED /* (AIL--) */
571 GENERATED maythrow = true;
573 # define OP1 VAROP(iptr->s1)
576 # line 304 "src/vm/jit/verify/icmds.c"
577 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG))
578 GENERATED VERIFY_ERROR("Array type mismatch");
580 # line 581 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
588 GENERATED case ICMD_FASTORE:
589 GENERATED /* (AIF--) */
590 GENERATED maythrow = true;
592 # define OP1 VAROP(iptr->s1)
595 # line 289 "src/vm/jit/verify/icmds.c"
596 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT))
597 GENERATED VERIFY_ERROR("Array type mismatch");
599 # line 600 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
607 GENERATED case ICMD_DASTORE:
608 GENERATED /* (AID--) */
609 GENERATED maythrow = true;
611 # define OP1 VAROP(iptr->s1)
614 # line 284 "src/vm/jit/verify/icmds.c"
615 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE))
616 GENERATED VERIFY_ERROR("Array type mismatch");
618 # line 619 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
626 GENERATED case ICMD_AASTORE:
627 GENERATED /* (AIA--) */
628 GENERATED maythrow = true;
630 # define OP1 VAROP(iptr->s1)
633 # line 309 "src/vm/jit/verify/icmds.c"
634 GENERATED /* we just check the basic input types and that the */
635 GENERATED /* destination is an array of references. Assignability to */
636 GENERATED /* the actual array must be checked at runtime, each time the */
637 GENERATED /* instruction is performed. (See builtin_canstore.) */
638 GENERATED if (!TYPEINFO_MAYBE_ARRAY_OF_REFS(OP1->typeinfo))
639 GENERATED VERIFY_ERROR("illegal instruction: AASTORE to non-reference array");
641 # line 642 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
649 GENERATED case ICMD_BASTORE:
650 GENERATED /* (AII--) */
651 GENERATED maythrow = true;
653 # define OP1 VAROP(iptr->s1)
656 # line 273 "src/vm/jit/verify/icmds.c"
657 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BOOLEAN)
658 GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE))
659 GENERATED VERIFY_ERROR("Array type mismatch");
661 # line 662 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
669 GENERATED case ICMD_CASTORE:
670 GENERATED /* (AII--) */
671 GENERATED maythrow = true;
673 # define OP1 VAROP(iptr->s1)
676 # line 279 "src/vm/jit/verify/icmds.c"
677 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR))
678 GENERATED VERIFY_ERROR("Array type mismatch");
680 # line 681 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
688 GENERATED case ICMD_SASTORE:
689 GENERATED /* (AII--) */
690 GENERATED maythrow = true;
692 # define OP1 VAROP(iptr->s1)
695 # line 299 "src/vm/jit/verify/icmds.c"
696 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT))
697 GENERATED VERIFY_ERROR("Array type mismatch");
699 # line 700 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
707 GENERATED case ICMD_POP:
708 GENERATED /* (1--) */
712 GENERATED case ICMD_POP2:
713 GENERATED /* (11--|2--) */
717 GENERATED case ICMD_IDIV:
718 GENERATED case ICMD_IREM:
719 GENERATED /* (II--I) */
720 GENERATED maythrow = true;
721 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
725 GENERATED case ICMD_LDIV:
726 GENERATED case ICMD_LREM:
727 GENERATED /* (LL--L) */
728 GENERATED maythrow = true;
729 GENERATED VAROP(iptr->dst)->type = TYPE_LNG;
733 GENERATED case ICMD_IINC:
735 GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_INT);
739 GENERATED case ICMD_GOTO:
741 GENERATED superblockend = true;
744 # line 388 "src/vm/jit/verify/icmds.c"
745 GENERATED /* {RESULTNOW} */
746 GENERATED TYPECHECK_COUNT(stat_ins_branch);
748 GENERATED /* propagate stack and variables to the target block */
749 GENERATED REACH(IPTR->dst);
751 # line 752 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
756 GENERATED case ICMD_JSR:
757 GENERATED /* (--R) */
758 GENERATED superblockend = true;
760 # define DST VAROP(iptr->dst)
763 # line 553 "src/vm/jit/verify/icmds.c"
764 GENERATED TYPEINFO_INIT_RETURNADDRESS(DST->typeinfo, BPTR->next);
765 GENERATED REACH(IPTR->sx.s23.s3.jsrtarget);
767 # line 768 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
769 GENERATED VAROP(iptr->dst)->type = TYPE_RET;
776 GENERATED case ICMD_RET:
778 GENERATED superblockend = true;
781 # line 570 "src/vm/jit/verify/icmds.c"
783 # if !defined(TYPECHECK_TYPEINFERER)
784 GENERATED /* check returnAddress variable */
785 GENERATED if (!typevector_checkretaddr(jd->var,IPTR->s1.varindex))
786 GENERATED VERIFY_ERROR("illegal instruction: RET using non-returnAddress variable");
789 GENERATED REACH(IPTR->dst);
791 # line 792 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
796 GENERATED case ICMD_TABLESWITCH:
797 GENERATED /* (I--) */
798 GENERATED superblockend = true;
800 # define OP1 VAROP(iptr->s1)
803 # line 429 "src/vm/jit/verify/icmds.c"
804 GENERATED /* {RESULTNOW} */
805 GENERATED TYPECHECK_COUNT(stat_ins_switch);
807 GENERATED table = IPTR->dst.table;
808 GENERATED i = IPTR->sx.s23.s3.tablehigh
809 GENERATED - IPTR->sx.s23.s2.tablelow + 1 + 1; /* plus default */
811 GENERATED while (--i >= 0) {
812 GENERATED REACH(*table);
816 GENERATED LOG("switch done");
818 # line 819 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
826 GENERATED case ICMD_LOOKUPSWITCH:
827 GENERATED /* (I--) */
828 GENERATED superblockend = true;
830 # define OP1 VAROP(iptr->s1)
833 # line 445 "src/vm/jit/verify/icmds.c"
834 GENERATED /* {RESULTNOW} */
835 GENERATED TYPECHECK_COUNT(stat_ins_switch);
837 GENERATED lookup = IPTR->dst.lookup;
838 GENERATED i = IPTR->sx.s23.s2.lookupcount;
839 GENERATED REACH(IPTR->sx.s23.s3.lookupdefault);
841 GENERATED while (--i >= 0) {
842 GENERATED REACH(lookup->target);
846 GENERATED LOG("switch done");
848 # line 849 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
856 GENERATED case ICMD_IRETURN:
857 GENERATED /* (I--) */
858 GENERATED superblockend = true;
860 # define OP1 VAROP(iptr->s1)
863 # line 511 "src/vm/jit/verify/icmds.c"
864 GENERATED if (STATE->returntype.type != TYPE_INT)
865 GENERATED VERIFY_ERROR("Return type mismatch");
867 # line 868 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
869 GENERATED goto return_tail;
875 GENERATED case ICMD_LRETURN:
876 GENERATED /* (L--) */
877 GENERATED superblockend = true;
879 # define OP1 VAROP(iptr->s1)
882 # line 516 "src/vm/jit/verify/icmds.c"
883 GENERATED if (STATE->returntype.type != TYPE_LNG)
884 GENERATED VERIFY_ERROR("Return type mismatch");
886 # line 887 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
888 GENERATED goto return_tail;
894 GENERATED case ICMD_FRETURN:
895 GENERATED /* (F--) */
896 GENERATED superblockend = true;
898 # define OP1 VAROP(iptr->s1)
901 # line 521 "src/vm/jit/verify/icmds.c"
902 GENERATED if (STATE->returntype.type != TYPE_FLT)
903 GENERATED VERIFY_ERROR("Return type mismatch");
905 # line 906 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
907 GENERATED goto return_tail;
913 GENERATED case ICMD_DRETURN:
914 GENERATED /* (D--) */
915 GENERATED superblockend = true;
917 # define OP1 VAROP(iptr->s1)
920 # line 526 "src/vm/jit/verify/icmds.c"
921 GENERATED if (STATE->returntype.type != TYPE_DBL)
922 GENERATED VERIFY_ERROR("Return type mismatch");
924 # line 925 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
926 GENERATED goto return_tail;
932 GENERATED case ICMD_ARETURN:
933 GENERATED /* (A--) */
934 GENERATED maythrow = true;
935 GENERATED superblockend = true;
937 # define OP1 VAROP(iptr->s1)
940 # line 486 "src/vm/jit/verify/icmds.c"
941 GENERATED TYPECHECK_COUNT(stat_ins_areturn);
942 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
943 GENERATED VERIFY_ERROR("illegal instruction: ARETURN on non-reference");
945 GENERATED if (STATE->returntype.type != TYPE_ADR
946 GENERATED || (r = typeinfo_is_assignable(&OP1->typeinfo,&(STATE->returntype.typeinfo)))
947 GENERATED == typecheck_FALSE)
948 GENERATED VERIFY_ERROR("Return type mismatch");
949 GENERATED if (r == typecheck_FAIL)
951 GENERATED if (r == typecheck_MAYBE) {
952 GENERATED /* the check has to be postponed, we need a patcher */
953 GENERATED TYPECHECK_COUNT(stat_ins_areturn_unresolved);
954 GENERATED IPTR->sx.s23.s2.uc = create_unresolved_class(
956 GENERATED METHOD->parseddesc->returntype.classref,
957 GENERATED &OP1->typeinfo);
958 GENERATED IPTR->flags.bits |= INS_FLAG_UNRESOLVED;
961 # line 962 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
963 GENERATED goto return_tail;
969 GENERATED case ICMD_RETURN:
971 GENERATED superblockend = true;
974 # line 531 "src/vm/jit/verify/icmds.c"
975 GENERATED if (STATE->returntype.type != TYPE_VOID)
976 GENERATED VERIFY_ERROR("Return type mismatch");
978 GENERATED return_tail:
979 GENERATED TYPECHECK_COUNT(stat_ins_primitive_return);
981 GENERATED if (STATE->initmethod && METHOD->clazz != class_java_lang_Object) {
982 GENERATED /* Check if the 'this' instance has been initialized. */
983 GENERATED LOG("Checking <init> marker");
985 # if defined(TYPECHECK_VARIABLESBASED)
986 GENERATED if (!typevector_checktype(jd->var,STATE->numlocals-1,TYPE_INT))
989 GENERATED if (STATE->locals[STATE->numlocals-1].type != TYPE_INT)
992 GENERATED VERIFY_ERROR("<init> method does not initialize 'this'");
995 # line 996 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1000 GENERATED case ICMD_GETSTATIC:
1001 GENERATED /* (--1|--2) */
1002 GENERATED maythrow = true;
1004 # define DST VAROP(iptr->dst)
1007 # line 222 "src/vm/jit/verify/icmds.c"
1008 GENERATED if (!handle_fieldaccess(state, NULL, NULL))
1009 GENERATED return false;
1010 GENERATED maythrow = true;
1012 # line 1013 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1020 GENERATED case ICMD_PUTSTATIC:
1021 GENERATED /* (1--|2--) */
1022 GENERATED maythrow = true;
1024 # define OP1 VAROP(iptr->s1)
1027 # line 168 "src/vm/jit/verify/icmds.c"
1028 GENERATED if (!handle_fieldaccess(state, NULL, VAROP(iptr->s1)))
1029 GENERATED return false;
1030 GENERATED maythrow = true;
1032 # line 1033 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1040 GENERATED case ICMD_GETFIELD:
1041 GENERATED /* (A--1|A--2) */
1042 GENERATED maythrow = true;
1044 # define OP1 VAROP(iptr->s1)
1046 # define DST VAROP(iptr->dst)
1049 # line 216 "src/vm/jit/verify/icmds.c"
1050 GENERATED if (!handle_fieldaccess(state, VAROP(iptr->s1), NULL))
1051 GENERATED return false;
1052 GENERATED maythrow = true;
1054 # line 1055 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1064 GENERATED case ICMD_PUTFIELD:
1065 GENERATED /* (A1--|A2--) */
1066 GENERATED maythrow = true;
1068 # define OP1 VAROP(iptr->s1)
1071 # line 162 "src/vm/jit/verify/icmds.c"
1072 GENERATED if (!handle_fieldaccess(state, VAROP(iptr->s1), VAROP(iptr->sx.s23.s2)))
1073 GENERATED return false;
1074 GENERATED maythrow = true;
1076 # line 1077 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1084 GENERATED case ICMD_INVOKEVIRTUAL:
1085 GENERATED case ICMD_INVOKESPECIAL:
1086 GENERATED case ICMD_INVOKESTATIC:
1087 GENERATED case ICMD_INVOKEINTERFACE:
1088 GENERATED /* (.--1|.--2|.--) */
1089 GENERATED maythrow = true;
1091 # define OP1 VAROP(iptr->s1)
1094 # line 592 "src/vm/jit/verify/icmds.c"
1095 GENERATED TYPECHECK_COUNT(stat_ins_invoke);
1096 GENERATED if (!handle_invocation(state))
1097 GENERATED EXCEPTION;
1098 GENERATED TYPECHECK_COUNTIF(INSTRUCTION_IS_UNRESOLVED(IPTR), stat_ins_invoke_unresolved);
1100 # line 1101 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1108 GENERATED case ICMD_ARRAYLENGTH:
1109 GENERATED /* (A--I) */
1110 GENERATED maythrow = true;
1112 # define OP1 VAROP(iptr->s1)
1114 # define DST VAROP(iptr->dst)
1117 # line 231 "src/vm/jit/verify/icmds.c"
1118 GENERATED if (!TYPEINFO_MAYBE_ARRAY(OP1->typeinfo)
1119 GENERATED && OP1->typeinfo.typeclass.cls != pseudo_class_Arraystub)
1120 GENERATED VERIFY_ERROR("illegal instruction: ARRAYLENGTH on non-array");
1122 # line 1123 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1124 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
1133 GENERATED case ICMD_ATHROW:
1134 GENERATED /* (A--) */
1135 GENERATED maythrow = true;
1136 GENERATED superblockend = true;
1138 # define OP1 VAROP(iptr->s1)
1141 # line 465 "src/vm/jit/verify/icmds.c"
1142 GENERATED TYPECHECK_COUNT(stat_ins_athrow);
1143 GENERATED r = typeinfo_is_assignable_to_class(&OP1->typeinfo,
1144 GENERATED CLASSREF_OR_CLASSINFO(class_java_lang_Throwable));
1145 GENERATED if (r == typecheck_FALSE)
1146 GENERATED VERIFY_ERROR("illegal instruction: ATHROW on non-Throwable");
1147 GENERATED if (r == typecheck_FAIL)
1148 GENERATED EXCEPTION;
1149 GENERATED if (r == typecheck_MAYBE) {
1150 GENERATED /* the check has to be postponed. we need a patcher */
1151 GENERATED TYPECHECK_COUNT(stat_ins_athrow_unresolved);
1152 GENERATED IPTR->sx.s23.s2.uc = create_unresolved_class(
1154 GENERATED /* XXX make this more efficient, use class_java_lang_Throwable
1155 GENERATED * directly */
1156 GENERATED class_get_classref(METHOD->clazz,utf_java_lang_Throwable),
1157 GENERATED &OP1->typeinfo);
1158 GENERATED IPTR->flags.bits |= INS_FLAG_UNRESOLVED;
1161 # line 1162 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1169 GENERATED case ICMD_CHECKCAST:
1170 GENERATED /* (A--A) */
1171 GENERATED maythrow = true;
1173 # define OP1 VAROP(iptr->s1)
1175 # define DST VAROP(iptr->dst)
1178 # line 365 "src/vm/jit/verify/icmds.c"
1180 # if !defined(TYPECHECK_TYPEINFERER)
1181 GENERATED /* returnAddress is not allowed */
1182 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
1183 GENERATED VERIFY_ERROR("Illegal instruction: CHECKCAST on non-reference");
1187 GENERATED /* XXX only if narrower */
1188 GENERATED if (!typeinfo_init_class(&(DST->typeinfo),IPTR->sx.s23.s3.c))
1189 GENERATED EXCEPTION;
1191 # line 1192 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1193 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
1202 GENERATED case ICMD_INSTANCEOF:
1203 GENERATED /* (A--I) */
1204 GENERATED maythrow = true;
1206 # define OP1 VAROP(iptr->s1)
1208 # define DST VAROP(iptr->dst)
1211 # line 377 "src/vm/jit/verify/icmds.c"
1212 GENERATED /* returnAddress is not allowed */
1213 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
1214 GENERATED VERIFY_ERROR("Illegal instruction: INSTANCEOF on non-reference");
1216 GENERATED /* XXX should propagate type information to the following if-branches */
1218 # line 1219 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1220 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
1229 GENERATED case ICMD_MULTIANEWARRAY:
1230 GENERATED /* (.--A) */
1231 GENERATED maythrow = true;
1233 # define OP1 VAROP(iptr->s1)
1235 # define DST VAROP(iptr->dst)
1238 # line 635 "src/vm/jit/verify/icmds.c"
1239 GENERATED if (!handle_multianewarray(STATE))
1240 GENERATED EXCEPTION;
1242 # line 1243 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1244 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
1253 GENERATED case ICMD_IASTORECONST:
1254 GENERATED /* (AI--) */
1255 GENERATED maythrow = true;
1257 # define OP1 VAROP(iptr->s1)
1260 # line 318 "src/vm/jit/verify/icmds.c"
1261 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_INT))
1262 GENERATED VERIFY_ERROR("Array type mismatch");
1264 # line 1265 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1272 GENERATED case ICMD_LASTORECONST:
1273 GENERATED /* (AI--) */
1274 GENERATED maythrow = true;
1276 # define OP1 VAROP(iptr->s1)
1279 # line 323 "src/vm/jit/verify/icmds.c"
1280 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_LONG))
1281 GENERATED VERIFY_ERROR("Array type mismatch");
1283 # line 1284 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1291 GENERATED case ICMD_FASTORECONST:
1292 GENERATED case ICMD_DASTORECONST:
1293 GENERATED case ICMD_AASTORECONST:
1294 GENERATED /* (AI--) */
1295 GENERATED maythrow = true;
1299 GENERATED case ICMD_BASTORECONST:
1300 GENERATED /* (AI--) */
1301 GENERATED maythrow = true;
1303 # define OP1 VAROP(iptr->s1)
1306 # line 328 "src/vm/jit/verify/icmds.c"
1307 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_BOOLEAN)
1308 GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_BYTE))
1309 GENERATED VERIFY_ERROR("Array type mismatch");
1311 # line 1312 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1319 GENERATED case ICMD_CASTORECONST:
1320 GENERATED /* (AI--) */
1321 GENERATED maythrow = true;
1323 # define OP1 VAROP(iptr->s1)
1326 # line 334 "src/vm/jit/verify/icmds.c"
1327 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_CHAR))
1328 GENERATED VERIFY_ERROR("Array type mismatch");
1330 # line 1331 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1338 GENERATED case ICMD_SASTORECONST:
1339 GENERATED /* (AI--) */
1340 GENERATED maythrow = true;
1342 # define OP1 VAROP(iptr->s1)
1345 # line 339 "src/vm/jit/verify/icmds.c"
1346 GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo, ARRAYTYPE_SHORT))
1347 GENERATED VERIFY_ERROR("Array type mismatch");
1349 # line 1350 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1357 GENERATED case ICMD_PUTSTATICCONST:
1358 GENERATED /* (--) */
1359 GENERATED maythrow = true;
1362 # line 195 "src/vm/jit/verify/icmds.c"
1363 GENERATED /* XXX this mess will go away with const operands */
1364 GENERATED INSTRUCTION_GET_FIELDREF(state->iptr, fieldref);
1365 GENERATED constvalue.type = fieldref->parseddesc.fd->type;
1366 GENERATED if (IS_ADR_TYPE(constvalue.type)) {
1367 GENERATED if (state->iptr->sx.val.anyptr) {
1368 GENERATED classinfo *cc = (state->iptr->flags.bits & INS_FLAG_CLASS)
1369 GENERATED ? class_java_lang_Class : class_java_lang_String;
1370 GENERATED assert(cc);
1371 GENERATED assert(cc->state & CLASS_LINKED);
1372 GENERATED typeinfo_init_classinfo(&(constvalue.typeinfo), cc);
1375 GENERATED TYPEINFO_INIT_NULLTYPE(constvalue.typeinfo);
1378 GENERATED if (!handle_fieldaccess(state, NULL, &constvalue))
1379 GENERATED return false;
1380 GENERATED maythrow = true;
1382 # line 1383 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1387 GENERATED case ICMD_PUTFIELDCONST:
1388 GENERATED /* (A--) */
1389 GENERATED maythrow = true;
1391 # define OP1 VAROP(iptr->s1)
1394 # line 174 "src/vm/jit/verify/icmds.c"
1395 GENERATED /* XXX this mess will go away with const operands */
1396 GENERATED INSTRUCTION_GET_FIELDREF(state->iptr, fieldref);
1397 GENERATED constvalue.type = fieldref->parseddesc.fd->type;
1398 GENERATED if (IS_ADR_TYPE(constvalue.type)) {
1399 GENERATED if (state->iptr->sx.val.anyptr) {
1400 GENERATED classinfo *cc = (state->iptr->flags.bits & INS_FLAG_CLASS)
1401 GENERATED ? class_java_lang_Class : class_java_lang_String;
1402 GENERATED assert(cc);
1403 GENERATED assert(cc->state & CLASS_LINKED);
1404 GENERATED typeinfo_init_classinfo(&(constvalue.typeinfo), cc);
1407 GENERATED TYPEINFO_INIT_NULLTYPE(constvalue.typeinfo);
1410 GENERATED if (!handle_fieldaccess(state, VAROP(iptr->s1), &constvalue))
1411 GENERATED return false;
1412 GENERATED maythrow = true;
1414 # line 1415 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1422 GENERATED case ICMD_BUILTIN:
1423 GENERATED /* (.--1|.--2|.--) */
1424 GENERATED maythrow = true;
1426 # define OP1 VAROP(iptr->s1)
1429 # line 650 "src/vm/jit/verify/icmds.c"
1430 GENERATED TYPECHECK_COUNT(stat_ins_builtin);
1431 GENERATED if (!handle_builtin(state))
1432 GENERATED EXCEPTION;
1434 # line 1435 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"