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 355 "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-typeinferer-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 90 "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-typeinferer-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 89 "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-typeinferer-gen.inc"
195 GENERATED case ICMD_ILOAD:
196 GENERATED /* (--I) */
197 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
201 GENERATED case ICMD_LLOAD:
202 GENERATED /* (--L) */
203 GENERATED VAROP(iptr->dst)->type = TYPE_LNG;
207 GENERATED case ICMD_FLOAD:
208 GENERATED /* (--F) */
209 GENERATED VAROP(iptr->dst)->type = TYPE_FLT;
213 GENERATED case ICMD_DLOAD:
214 GENERATED /* (--D) */
215 GENERATED VAROP(iptr->dst)->type = TYPE_DBL;
219 GENERATED case ICMD_ALOAD:
220 GENERATED /* (--A) */
222 # define OP1 VAROP(IPTR->s1)
224 # define DST VAROP(iptr->dst)
227 # line 99 "src/vm/jit/verify/icmds.c"
228 GENERATED TYPECHECK_COUNT(stat_ins_aload);
231 # if !defined(TYPECHECK_TYPEINFERER)
232 GENERATED /* loading a returnAddress is not allowed */
233 GENERATED if (!TYPEDESC_IS_REFERENCE(*OP1)) {
234 GENERATED VERIFY_ERROR("illegal instruction: ALOAD loading non-reference");
238 GENERATED TYPEINFO_COPY(OP1->typeinfo,DST->typeinfo);
240 # line 241 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
242 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
251 GENERATED case ICMD_IALOAD:
252 GENERATED case ICMD_BALOAD:
253 GENERATED case ICMD_CALOAD:
254 GENERATED case ICMD_SALOAD:
255 GENERATED case ICMD_IDIV:
256 GENERATED case ICMD_IREM:
257 GENERATED case ICMD_ARRAYLENGTH:
258 GENERATED case ICMD_INSTANCEOF:
259 GENERATED /* (AI--I), (II--I), (A--I) */
260 GENERATED maythrow = true;
261 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
265 GENERATED case ICMD_LALOAD:
266 GENERATED case ICMD_LDIV:
267 GENERATED case ICMD_LREM:
268 GENERATED /* (AI--L), (LL--L) */
269 GENERATED maythrow = true;
270 GENERATED VAROP(iptr->dst)->type = TYPE_LNG;
274 GENERATED case ICMD_FALOAD:
275 GENERATED /* (AI--F) */
276 GENERATED maythrow = true;
277 GENERATED VAROP(iptr->dst)->type = TYPE_FLT;
281 GENERATED case ICMD_DALOAD:
282 GENERATED /* (AI--D) */
283 GENERATED maythrow = true;
284 GENERATED VAROP(iptr->dst)->type = TYPE_DBL;
288 GENERATED case ICMD_AALOAD:
289 GENERATED /* (AI--A) */
290 GENERATED maythrow = true;
292 # define OP1 VAROP(iptr->s1)
294 # define DST VAROP(iptr->dst)
297 # line 121 "src/vm/jit/verify/icmds.c"
299 # if !defined(TYPECHECK_TYPEINFERER)
300 GENERATED if (!TYPEINFO_MAYBE_ARRAY_OF_REFS(OP1->typeinfo))
301 GENERATED VERIFY_ERROR("illegal instruction: AALOAD on non-reference array");
305 GENERATED if (!typeinfo_init_component(&OP1->typeinfo,&DST->typeinfo))
308 # line 309 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
310 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
319 GENERATED case ICMD_ISTORE:
320 GENERATED /* (I--) */
321 GENERATED STORE_LOCAL(TYPE_INT, IPTR->dst.varindex);
325 GENERATED case ICMD_LSTORE:
326 GENERATED /* (L--) */
327 GENERATED STORE_LOCAL_2_WORD(TYPE_LNG, IPTR->dst.varindex);
331 GENERATED case ICMD_FSTORE:
332 GENERATED /* (F--) */
333 GENERATED STORE_LOCAL(TYPE_FLT, IPTR->dst.varindex);
337 GENERATED case ICMD_DSTORE:
338 GENERATED /* (D--) */
339 GENERATED STORE_LOCAL_2_WORD(TYPE_DBL, IPTR->dst.varindex);
343 GENERATED case ICMD_ASTORE:
344 GENERATED /* (A--|R--) */
345 GENERATED STORE_LOCAL(VAROP(iptr->s1)->type, IPTR->dst.varindex);
347 # define DST VAROP(IPTR->dst)
349 # define OP1 VAROP(iptr->s1)
352 # line 114 "src/vm/jit/verify/icmds.c"
353 GENERATED TYPEINFO_COPY(OP1->typeinfo, DST->typeinfo);
355 # line 356 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
365 GENERATED case ICMD_IF_LEQ:
366 GENERATED case ICMD_IF_LNE:
367 GENERATED case ICMD_IF_LLT:
368 GENERATED case ICMD_IF_LGE:
369 GENERATED case ICMD_IF_LGT:
370 GENERATED case ICMD_IF_LLE:
371 GENERATED case ICMD_IF_LCMPEQ:
372 GENERATED case ICMD_IF_LCMPNE:
373 GENERATED case ICMD_IF_LCMPLT:
374 GENERATED case ICMD_IF_LCMPGE:
375 GENERATED case ICMD_IF_LCMPGT:
376 GENERATED case ICMD_IF_LCMPLE:
377 GENERATED case ICMD_IFEQ:
378 GENERATED case ICMD_IFNE:
379 GENERATED case ICMD_IFLT:
380 GENERATED case ICMD_IFGE:
381 GENERATED case ICMD_IFGT:
382 GENERATED case ICMD_IFLE:
383 GENERATED case ICMD_IF_ICMPEQ:
384 GENERATED case ICMD_IF_ICMPNE:
385 GENERATED case ICMD_IF_ICMPLT:
386 GENERATED case ICMD_IF_ICMPGE:
387 GENERATED case ICMD_IF_ICMPGT:
388 GENERATED case ICMD_IF_ICMPLE:
389 GENERATED case ICMD_IF_ACMPEQ:
390 GENERATED case ICMD_IF_ACMPNE:
391 GENERATED case ICMD_IFNULL:
392 GENERATED case ICMD_IFNONNULL:
393 GENERATED /* (L--), (LL--), (I--), (II--), (AA--), (A--) */
395 # define OP1 VAROP(iptr->s1)
398 # line 414 "src/vm/jit/verify/icmds.c"
399 GENERATED /* {RESULTNOW} */
400 GENERATED TYPECHECK_COUNT(stat_ins_branch);
402 GENERATED /* propagate stack and variables to the target block */
403 GENERATED REACH(IPTR->dst);
405 # line 406 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
413 GENERATED case ICMD_IASTORE:
414 GENERATED case ICMD_LASTORE:
415 GENERATED case ICMD_FASTORE:
416 GENERATED case ICMD_DASTORE:
417 GENERATED case ICMD_AASTORE:
418 GENERATED case ICMD_BASTORE:
419 GENERATED case ICMD_CASTORE:
420 GENERATED case ICMD_SASTORE:
421 GENERATED case ICMD_PUTSTATIC:
422 GENERATED case ICMD_PUTFIELD:
423 GENERATED case ICMD_IASTORECONST:
424 GENERATED case ICMD_LASTORECONST:
425 GENERATED case ICMD_FASTORECONST:
426 GENERATED case ICMD_DASTORECONST:
427 GENERATED case ICMD_AASTORECONST:
428 GENERATED case ICMD_BASTORECONST:
429 GENERATED case ICMD_CASTORECONST:
430 GENERATED case ICMD_SASTORECONST:
431 GENERATED case ICMD_PUTSTATICCONST:
432 GENERATED case ICMD_PUTFIELDCONST:
433 GENERATED /* (AII--), (AIL--), (AIF--), (AID--), (AIA--), (1--|2--), (A1--|A2--), (AI--), (--), (A--) */
434 GENERATED maythrow = true;
438 GENERATED case ICMD_POP:
439 GENERATED /* (1--) */
443 GENERATED case ICMD_POP2:
444 GENERATED /* (11--|2--) */
448 GENERATED case ICMD_IINC:
453 GENERATED case ICMD_GOTO:
455 GENERATED superblockend = true;
458 # line 396 "src/vm/jit/verify/icmds.c"
459 GENERATED /* {RESULTNOW} */
460 GENERATED TYPECHECK_COUNT(stat_ins_branch);
462 GENERATED /* propagate stack and variables to the target block */
463 GENERATED REACH(IPTR->dst);
465 # line 466 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
470 GENERATED case ICMD_JSR:
471 GENERATED /* (--R) */
472 GENERATED superblockend = true;
474 # define DST VAROP(iptr->dst)
477 # line 587 "src/vm/jit/verify/icmds.c"
478 GENERATED TYPEINFO_INIT_RETURNADDRESS(DST->typeinfo, BPTR->next);
479 GENERATED REACH(IPTR->sx.s23.s3.jsrtarget);
481 # line 482 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
483 GENERATED VAROP(iptr->dst)->type = TYPE_RET;
490 GENERATED case ICMD_RET:
492 GENERATED superblockend = true;
495 # line 604 "src/vm/jit/verify/icmds.c"
497 # if !defined(TYPECHECK_TYPEINFERER)
498 GENERATED /* check returnAddress variable */
499 GENERATED if (!typevector_checkretaddr(jd->var,IPTR->s1.varindex))
500 GENERATED VERIFY_ERROR("illegal instruction: RET using non-returnAddress variable");
503 GENERATED REACH(IPTR->dst);
505 # line 506 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
510 GENERATED case ICMD_TABLESWITCH:
511 GENERATED /* (I--) */
512 GENERATED superblockend = true;
514 # define OP1 VAROP(iptr->s1)
517 # line 463 "src/vm/jit/verify/icmds.c"
518 GENERATED /* {RESULTNOW} */
519 GENERATED TYPECHECK_COUNT(stat_ins_switch);
521 GENERATED table = IPTR->dst.table;
522 GENERATED i = IPTR->sx.s23.s3.tablehigh
523 GENERATED - IPTR->sx.s23.s2.tablelow + 1 + 1; /* plus default */
525 GENERATED while (--i >= 0) {
526 GENERATED REACH(*table);
530 GENERATED LOG("switch done");
532 # line 533 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
540 GENERATED case ICMD_LOOKUPSWITCH:
541 GENERATED /* (I--) */
542 GENERATED superblockend = true;
544 # define OP1 VAROP(iptr->s1)
547 # line 479 "src/vm/jit/verify/icmds.c"
548 GENERATED /* {RESULTNOW} */
549 GENERATED TYPECHECK_COUNT(stat_ins_switch);
551 GENERATED lookup = IPTR->dst.lookup;
552 GENERATED i = IPTR->sx.s23.s2.lookupcount;
553 GENERATED REACH(IPTR->sx.s23.s3.lookupdefault);
555 GENERATED while (--i >= 0) {
556 GENERATED REACH(lookup->target);
560 GENERATED LOG("switch done");
562 # line 563 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
570 GENERATED case ICMD_IRETURN:
571 GENERATED case ICMD_LRETURN:
572 GENERATED case ICMD_FRETURN:
573 GENERATED case ICMD_DRETURN:
574 GENERATED case ICMD_RETURN:
575 GENERATED /* (I--), (L--), (F--), (D--), (--) */
576 GENERATED superblockend = true;
580 GENERATED case ICMD_ARETURN:
581 GENERATED case ICMD_ATHROW:
582 GENERATED /* (A--) */
583 GENERATED maythrow = true;
584 GENERATED superblockend = true;
588 GENERATED case ICMD_GETSTATIC:
589 GENERATED /* (--1|--2) */
590 GENERATED maythrow = true;
592 # define DST VAROP(iptr->dst)
595 # line 230 "src/vm/jit/verify/icmds.c"
596 GENERATED if (!handle_fieldaccess(state, NULL, NULL))
597 GENERATED return false;
598 GENERATED maythrow = true;
600 # line 601 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
608 GENERATED case ICMD_GETFIELD:
609 GENERATED /* (A--1|A--2) */
610 GENERATED maythrow = true;
612 # define OP1 VAROP(iptr->s1)
614 # define DST VAROP(iptr->dst)
617 # line 224 "src/vm/jit/verify/icmds.c"
618 GENERATED if (!handle_fieldaccess(state, VAROP(iptr->s1), NULL))
619 GENERATED return false;
620 GENERATED maythrow = true;
622 # line 623 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
632 GENERATED case ICMD_INVOKEVIRTUAL:
633 GENERATED case ICMD_INVOKESPECIAL:
634 GENERATED case ICMD_INVOKESTATIC:
635 GENERATED case ICMD_INVOKEINTERFACE:
636 GENERATED /* (.--1|.--2|.--) */
637 GENERATED maythrow = true;
639 # define OP1 VAROP(iptr->s1)
642 # line 626 "src/vm/jit/verify/icmds.c"
643 GENERATED TYPECHECK_COUNT(stat_ins_invoke);
644 GENERATED if (!handle_invocation(state))
646 GENERATED TYPECHECK_COUNTIF(INSTRUCTION_IS_UNRESOLVED(IPTR), stat_ins_invoke_unresolved);
648 # line 649 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
656 GENERATED case ICMD_CHECKCAST:
657 GENERATED /* (A--A) */
658 GENERATED maythrow = true;
660 # define OP1 VAROP(iptr->s1)
662 # define DST VAROP(iptr->dst)
665 # line 373 "src/vm/jit/verify/icmds.c"
667 # if !defined(TYPECHECK_TYPEINFERER)
668 GENERATED /* returnAddress is not allowed */
669 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
670 GENERATED VERIFY_ERROR("Illegal instruction: CHECKCAST on non-reference");
674 GENERATED /* XXX only if narrower */
675 GENERATED if (!typeinfo_init_class(&(DST->typeinfo),IPTR->sx.s23.s3.c))
678 # line 679 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
680 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
689 GENERATED case ICMD_MULTIANEWARRAY:
690 GENERATED /* (.--A) */
691 GENERATED maythrow = true;
693 # define OP1 VAROP(iptr->s1)
695 # define DST VAROP(iptr->dst)
698 # line 669 "src/vm/jit/verify/icmds.c"
699 GENERATED if (!handle_multianewarray(STATE))
702 # line 703 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
704 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
713 GENERATED case ICMD_BUILTIN:
714 GENERATED /* (.--1|.--2|.--) */
715 GENERATED maythrow = true;
717 # define OP1 VAROP(iptr->s1)
720 # line 684 "src/vm/jit/verify/icmds.c"
721 GENERATED TYPECHECK_COUNT(stat_ins_builtin);
722 GENERATED if (!handle_builtin(state))
725 # line 726 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"