3 GENERATED case ICMD_NOP:
4 GENERATED case ICMD_BREAKPOINT:
5 GENERATED case ICMD_INLINE_START:
6 GENERATED case ICMD_INLINE_END:
7 GENERATED case ICMD_INLINE_BODY:
12 GENERATED case ICMD_ACONST:
14 GENERATED maythrow = true;
16 # define DST VAROP(iptr->dst)
19 # line 345 "src/vm/jit/verify/icmds.cpp"
20 GENERATED if (IPTR->flags.bits & INS_FLAG_CLASS) {
21 GENERATED /* a java.lang.Class reference */
22 GENERATED TYPEINFO_INIT_JAVA_LANG_CLASS(DST->typeinfo,IPTR->sx.val.c);
25 GENERATED if (IPTR->sx.val.anyptr == NULL)
26 GENERATED TYPEINFO_INIT_NULLTYPE(DST->typeinfo);
28 GENERATED /* string constant (or constant for builtin function) */
29 GENERATED typeinfo_init_classinfo(&(DST->typeinfo),class_java_lang_String);
33 # line 34 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
35 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
42 GENERATED case ICMD_CHECKNULL:
43 GENERATED /* (A--A) */
44 GENERATED maythrow = true;
45 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
49 GENERATED case ICMD_ICONST:
50 GENERATED case ICMD_IDIVPOW2:
51 GENERATED case ICMD_LCMPCONST:
52 GENERATED case ICMD_IADDCONST:
53 GENERATED case ICMD_ISUBCONST:
54 GENERATED case ICMD_IMULCONST:
55 GENERATED case ICMD_IANDCONST:
56 GENERATED case ICMD_IORCONST:
57 GENERATED case ICMD_IXORCONST:
58 GENERATED case ICMD_ISHLCONST:
59 GENERATED case ICMD_ISHRCONST:
60 GENERATED case ICMD_IUSHRCONST:
61 GENERATED case ICMD_IREMPOW2:
62 GENERATED case ICMD_IADD:
63 GENERATED case ICMD_ISUB:
64 GENERATED case ICMD_IMUL:
65 GENERATED case ICMD_INEG:
66 GENERATED case ICMD_ISHL:
67 GENERATED case ICMD_ISHR:
68 GENERATED case ICMD_IUSHR:
69 GENERATED case ICMD_IAND:
70 GENERATED case ICMD_IOR:
71 GENERATED case ICMD_IXOR:
72 GENERATED case ICMD_L2I:
73 GENERATED case ICMD_F2I:
74 GENERATED case ICMD_D2I:
75 GENERATED case ICMD_INT2BYTE:
76 GENERATED case ICMD_INT2CHAR:
77 GENERATED case ICMD_INT2SHORT:
78 GENERATED case ICMD_LCMP:
79 GENERATED case ICMD_FCMPL:
80 GENERATED case ICMD_FCMPG:
81 GENERATED case ICMD_DCMPL:
82 GENERATED case ICMD_DCMPG:
83 GENERATED case ICMD_IMULPOW2:
84 GENERATED /* (--I), (I--I), (L--I), (II--I), (F--I), (D--I), (LL--I), (FF--I), (DD--I) */
85 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
89 GENERATED case ICMD_LDIVPOW2:
90 GENERATED case ICMD_LCONST:
91 GENERATED case ICMD_LADDCONST:
92 GENERATED case ICMD_LSUBCONST:
93 GENERATED case ICMD_LMULCONST:
94 GENERATED case ICMD_LANDCONST:
95 GENERATED case ICMD_LORCONST:
96 GENERATED case ICMD_LXORCONST:
97 GENERATED case ICMD_LSHLCONST:
98 GENERATED case ICMD_LSHRCONST:
99 GENERATED case ICMD_LUSHRCONST:
100 GENERATED case ICMD_LREMPOW2:
101 GENERATED case ICMD_LADD:
102 GENERATED case ICMD_LSUB:
103 GENERATED case ICMD_LMUL:
104 GENERATED case ICMD_LNEG:
105 GENERATED case ICMD_LSHL:
106 GENERATED case ICMD_LSHR:
107 GENERATED case ICMD_LUSHR:
108 GENERATED case ICMD_LAND:
109 GENERATED case ICMD_LOR:
110 GENERATED case ICMD_LXOR:
111 GENERATED case ICMD_I2L:
112 GENERATED case ICMD_F2L:
113 GENERATED case ICMD_D2L:
114 GENERATED case ICMD_LMULPOW2:
115 GENERATED /* (L--L), (--L), (LL--L), (LI--L), (I--L), (F--L), (D--L) */
116 GENERATED VAROP(iptr->dst)->type = TYPE_LNG;
120 GENERATED case ICMD_FCONST:
121 GENERATED case ICMD_FADD:
122 GENERATED case ICMD_FSUB:
123 GENERATED case ICMD_FMUL:
124 GENERATED case ICMD_FDIV:
125 GENERATED case ICMD_FREM:
126 GENERATED case ICMD_FNEG:
127 GENERATED case ICMD_I2F:
128 GENERATED case ICMD_L2F:
129 GENERATED case ICMD_D2F:
130 GENERATED /* (--F), (FF--F), (F--F), (I--F), (L--F), (D--F) */
131 GENERATED VAROP(iptr->dst)->type = TYPE_FLT;
135 GENERATED case ICMD_DCONST:
136 GENERATED case ICMD_DADD:
137 GENERATED case ICMD_DSUB:
138 GENERATED case ICMD_DMUL:
139 GENERATED case ICMD_DDIV:
140 GENERATED case ICMD_DREM:
141 GENERATED case ICMD_DNEG:
142 GENERATED case ICMD_I2D:
143 GENERATED case ICMD_L2D:
144 GENERATED case ICMD_F2D:
145 GENERATED /* (--D), (DD--D), (D--D), (I--D), (L--D), (F--D) */
146 GENERATED VAROP(iptr->dst)->type = TYPE_DBL;
150 GENERATED case ICMD_COPY:
151 GENERATED /* (1--1) */
153 # define OP1 VAROP(iptr->s1)
155 # define DST VAROP(iptr->dst)
158 # line 80 "src/vm/jit/verify/icmds.cpp"
159 GENERATED TYPECHECK_COUNT(stat_ins_stack);
160 GENERATED COPYTYPE(IPTR->s1, IPTR->dst);
161 GENERATED DST->type = OP1->type;
163 # line 164 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
173 GENERATED case ICMD_MOVE:
174 GENERATED /* (1--1) */
176 # define OP1 VAROP(iptr->s1)
178 # define DST VAROP(iptr->dst)
181 # line 79 "src/vm/jit/verify/icmds.cpp"
182 GENERATED TYPECHECK_COUNT(stat_ins_stack);
183 GENERATED COPYTYPE(IPTR->s1, IPTR->dst);
184 GENERATED DST->type = OP1->type;
186 # line 187 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
196 GENERATED case ICMD_ILOAD:
197 GENERATED /* (--I) */
198 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
202 GENERATED case ICMD_LLOAD:
203 GENERATED /* (--L) */
204 GENERATED VAROP(iptr->dst)->type = TYPE_LNG;
208 GENERATED case ICMD_FLOAD:
209 GENERATED /* (--F) */
210 GENERATED VAROP(iptr->dst)->type = TYPE_FLT;
214 GENERATED case ICMD_DLOAD:
215 GENERATED /* (--D) */
216 GENERATED VAROP(iptr->dst)->type = TYPE_DBL;
220 GENERATED case ICMD_ALOAD:
221 GENERATED /* (--A) */
223 # define OP1 VAROP(IPTR->s1)
225 # define DST VAROP(iptr->dst)
228 # line 89 "src/vm/jit/verify/icmds.cpp"
229 GENERATED TYPECHECK_COUNT(stat_ins_aload);
232 # if !defined(TYPECHECK_TYPEINFERER)
233 GENERATED /* loading a returnAddress is not allowed */
234 GENERATED if (!TYPEDESC_IS_REFERENCE(*OP1)) {
235 GENERATED VERIFY_ERROR("illegal instruction: ALOAD loading non-reference");
239 GENERATED TYPEINFO_COPY(OP1->typeinfo,DST->typeinfo);
241 # line 242 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
243 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
252 GENERATED case ICMD_IALOAD:
253 GENERATED case ICMD_BALOAD:
254 GENERATED case ICMD_CALOAD:
255 GENERATED case ICMD_SALOAD:
256 GENERATED case ICMD_IDIV:
257 GENERATED case ICMD_IREM:
258 GENERATED case ICMD_ARRAYLENGTH:
259 GENERATED case ICMD_INSTANCEOF:
260 GENERATED /* (AI--I), (II--I), (A--I) */
261 GENERATED maythrow = true;
262 GENERATED VAROP(iptr->dst)->type = TYPE_INT;
266 GENERATED case ICMD_LALOAD:
267 GENERATED case ICMD_LDIV:
268 GENERATED case ICMD_LREM:
269 GENERATED /* (AI--L), (LL--L) */
270 GENERATED maythrow = true;
271 GENERATED VAROP(iptr->dst)->type = TYPE_LNG;
275 GENERATED case ICMD_FALOAD:
276 GENERATED /* (AI--F) */
277 GENERATED maythrow = true;
278 GENERATED VAROP(iptr->dst)->type = TYPE_FLT;
282 GENERATED case ICMD_DALOAD:
283 GENERATED /* (AI--D) */
284 GENERATED maythrow = true;
285 GENERATED VAROP(iptr->dst)->type = TYPE_DBL;
289 GENERATED case ICMD_AALOAD:
290 GENERATED /* (AI--A) */
291 GENERATED maythrow = true;
293 # define OP1 VAROP(iptr->s1)
295 # define DST VAROP(iptr->dst)
298 # line 111 "src/vm/jit/verify/icmds.cpp"
300 # if !defined(TYPECHECK_TYPEINFERER)
301 GENERATED if (!TYPEINFO_MAYBE_ARRAY_OF_REFS(OP1->typeinfo))
302 GENERATED VERIFY_ERROR("illegal instruction: AALOAD on non-reference array");
306 GENERATED if (!typeinfo_init_component(&OP1->typeinfo,&DST->typeinfo))
309 # line 310 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
311 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
320 GENERATED case ICMD_ISTORE:
321 GENERATED /* (I--) */
322 GENERATED STORE_LOCAL(TYPE_INT, IPTR->dst.varindex);
326 GENERATED case ICMD_LSTORE:
327 GENERATED /* (L--) */
328 GENERATED STORE_LOCAL_2_WORD(TYPE_LNG, IPTR->dst.varindex);
332 GENERATED case ICMD_FSTORE:
333 GENERATED /* (F--) */
334 GENERATED STORE_LOCAL(TYPE_FLT, IPTR->dst.varindex);
338 GENERATED case ICMD_DSTORE:
339 GENERATED /* (D--) */
340 GENERATED STORE_LOCAL_2_WORD(TYPE_DBL, IPTR->dst.varindex);
344 GENERATED case ICMD_ASTORE:
345 GENERATED /* (A--|R--) */
346 GENERATED STORE_LOCAL(VAROP(iptr->s1)->type, IPTR->dst.varindex);
348 # define DST VAROP(IPTR->dst)
350 # define OP1 VAROP(iptr->s1)
353 # line 104 "src/vm/jit/verify/icmds.cpp"
354 GENERATED TYPEINFO_COPY(OP1->typeinfo, DST->typeinfo);
356 # line 357 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
366 GENERATED case ICMD_IF_LEQ:
367 GENERATED case ICMD_IF_LNE:
368 GENERATED case ICMD_IF_LLT:
369 GENERATED case ICMD_IF_LGE:
370 GENERATED case ICMD_IF_LGT:
371 GENERATED case ICMD_IF_LLE:
372 GENERATED case ICMD_IF_LCMPEQ:
373 GENERATED case ICMD_IF_LCMPNE:
374 GENERATED case ICMD_IF_LCMPLT:
375 GENERATED case ICMD_IF_LCMPGE:
376 GENERATED case ICMD_IF_LCMPGT:
377 GENERATED case ICMD_IF_LCMPLE:
378 GENERATED case ICMD_IFEQ:
379 GENERATED case ICMD_IFNE:
380 GENERATED case ICMD_IFLT:
381 GENERATED case ICMD_IFGE:
382 GENERATED case ICMD_IFGT:
383 GENERATED case ICMD_IFLE:
384 GENERATED case ICMD_IF_ICMPEQ:
385 GENERATED case ICMD_IF_ICMPNE:
386 GENERATED case ICMD_IF_ICMPLT:
387 GENERATED case ICMD_IF_ICMPGE:
388 GENERATED case ICMD_IF_ICMPGT:
389 GENERATED case ICMD_IF_ICMPLE:
390 GENERATED case ICMD_IF_ACMPEQ:
391 GENERATED case ICMD_IF_ACMPNE:
392 GENERATED case ICMD_IFNULL:
393 GENERATED case ICMD_IFNONNULL:
394 GENERATED /* (L--), (LL--), (I--), (II--), (AA--), (A--) */
396 # define OP1 VAROP(iptr->s1)
399 # line 404 "src/vm/jit/verify/icmds.cpp"
400 GENERATED /* {RESULTNOW} */
401 GENERATED TYPECHECK_COUNT(stat_ins_branch);
403 GENERATED /* propagate stack and variables to the target block */
404 GENERATED REACH(IPTR->dst);
406 # line 407 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
414 GENERATED case ICMD_IASTORE:
415 GENERATED case ICMD_LASTORE:
416 GENERATED case ICMD_FASTORE:
417 GENERATED case ICMD_DASTORE:
418 GENERATED case ICMD_AASTORE:
419 GENERATED case ICMD_BASTORE:
420 GENERATED case ICMD_CASTORE:
421 GENERATED case ICMD_SASTORE:
422 GENERATED case ICMD_PUTSTATIC:
423 GENERATED case ICMD_PUTFIELD:
424 GENERATED case ICMD_IASTORECONST:
425 GENERATED case ICMD_LASTORECONST:
426 GENERATED case ICMD_FASTORECONST:
427 GENERATED case ICMD_DASTORECONST:
428 GENERATED case ICMD_AASTORECONST:
429 GENERATED case ICMD_BASTORECONST:
430 GENERATED case ICMD_CASTORECONST:
431 GENERATED case ICMD_SASTORECONST:
432 GENERATED case ICMD_PUTSTATICCONST:
433 GENERATED case ICMD_PUTFIELDCONST:
434 GENERATED /* (AII--), (AIL--), (AIF--), (AID--), (AIA--), (1--|2--), (A1--|A2--), (AI--), (--), (A--) */
435 GENERATED maythrow = true;
439 GENERATED case ICMD_POP:
440 GENERATED /* (1--) */
444 GENERATED case ICMD_POP2:
445 GENERATED /* (11--|2--) */
449 GENERATED case ICMD_IINC:
454 GENERATED case ICMD_GOTO:
456 GENERATED superblockend = true;
459 # line 386 "src/vm/jit/verify/icmds.cpp"
460 GENERATED /* {RESULTNOW} */
461 GENERATED TYPECHECK_COUNT(stat_ins_branch);
463 GENERATED /* propagate stack and variables to the target block */
464 GENERATED REACH(IPTR->dst);
466 # line 467 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
471 GENERATED case ICMD_JSR:
472 GENERATED /* (--R) */
473 GENERATED superblockend = true;
475 # define DST VAROP(iptr->dst)
478 # line 551 "src/vm/jit/verify/icmds.cpp"
479 GENERATED TYPEINFO_INIT_RETURNADDRESS(DST->typeinfo, BPTR->next);
480 GENERATED REACH(IPTR->sx.s23.s3.jsrtarget);
482 # line 483 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
484 GENERATED VAROP(iptr->dst)->type = TYPE_RET;
491 GENERATED case ICMD_RET:
493 GENERATED superblockend = true;
496 # line 568 "src/vm/jit/verify/icmds.cpp"
498 # if !defined(TYPECHECK_TYPEINFERER)
499 GENERATED /* check returnAddress variable */
500 GENERATED if (!typevector_checkretaddr(jd->var,IPTR->s1.varindex))
501 GENERATED VERIFY_ERROR("illegal instruction: RET using non-returnAddress variable");
504 GENERATED REACH(IPTR->dst);
506 # line 507 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
511 GENERATED case ICMD_TABLESWITCH:
512 GENERATED /* (I--) */
513 GENERATED superblockend = true;
515 # define OP1 VAROP(iptr->s1)
518 # line 427 "src/vm/jit/verify/icmds.cpp"
519 GENERATED /* {RESULTNOW} */
520 GENERATED TYPECHECK_COUNT(stat_ins_switch);
522 GENERATED table = IPTR->dst.table;
523 GENERATED i = IPTR->sx.s23.s3.tablehigh
524 GENERATED - IPTR->sx.s23.s2.tablelow + 1 + 1; /* plus default */
526 GENERATED while (--i >= 0) {
527 GENERATED REACH(*table);
531 GENERATED LOG("switch done");
533 # line 534 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
541 GENERATED case ICMD_LOOKUPSWITCH:
542 GENERATED /* (I--) */
543 GENERATED superblockend = true;
545 # define OP1 VAROP(iptr->s1)
548 # line 443 "src/vm/jit/verify/icmds.cpp"
549 GENERATED /* {RESULTNOW} */
550 GENERATED TYPECHECK_COUNT(stat_ins_switch);
552 GENERATED lookup = IPTR->dst.lookup;
553 GENERATED i = IPTR->sx.s23.s2.lookupcount;
554 GENERATED REACH(IPTR->sx.s23.s3.lookupdefault);
556 GENERATED while (--i >= 0) {
557 GENERATED REACH(lookup->target);
561 GENERATED LOG("switch done");
563 # line 564 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
571 GENERATED case ICMD_IRETURN:
572 GENERATED case ICMD_LRETURN:
573 GENERATED case ICMD_FRETURN:
574 GENERATED case ICMD_DRETURN:
575 GENERATED case ICMD_RETURN:
576 GENERATED /* (I--), (L--), (F--), (D--), (--) */
577 GENERATED superblockend = true;
581 GENERATED case ICMD_ARETURN:
582 GENERATED case ICMD_ATHROW:
583 GENERATED /* (A--) */
584 GENERATED maythrow = true;
585 GENERATED superblockend = true;
589 GENERATED case ICMD_GETSTATIC:
590 GENERATED /* (--1|--2) */
591 GENERATED maythrow = true;
593 # define DST VAROP(iptr->dst)
596 # line 220 "src/vm/jit/verify/icmds.cpp"
597 GENERATED if (!handle_fieldaccess(state, NULL, NULL))
598 GENERATED return false;
599 GENERATED maythrow = true;
601 # line 602 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
609 GENERATED case ICMD_GETFIELD:
610 GENERATED /* (A--1|A--2) */
611 GENERATED maythrow = true;
613 # define OP1 VAROP(iptr->s1)
615 # define DST VAROP(iptr->dst)
618 # line 214 "src/vm/jit/verify/icmds.cpp"
619 GENERATED if (!handle_fieldaccess(state, VAROP(iptr->s1), NULL))
620 GENERATED return false;
621 GENERATED maythrow = true;
623 # line 624 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
633 GENERATED case ICMD_INVOKEVIRTUAL:
634 GENERATED case ICMD_INVOKESPECIAL:
635 GENERATED case ICMD_INVOKESTATIC:
636 GENERATED case ICMD_INVOKEINTERFACE:
637 GENERATED /* (.--1|.--2|.--) */
638 GENERATED maythrow = true;
640 # define OP1 VAROP(iptr->s1)
643 # line 590 "src/vm/jit/verify/icmds.cpp"
644 GENERATED TYPECHECK_COUNT(stat_ins_invoke);
645 GENERATED if (!handle_invocation(state))
647 GENERATED TYPECHECK_COUNTIF(INSTRUCTION_IS_UNRESOLVED(IPTR), stat_ins_invoke_unresolved);
649 # line 650 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
657 GENERATED case ICMD_CHECKCAST:
658 GENERATED /* (A--A) */
659 GENERATED maythrow = true;
661 # define OP1 VAROP(iptr->s1)
663 # define DST VAROP(iptr->dst)
666 # line 363 "src/vm/jit/verify/icmds.cpp"
668 # if !defined(TYPECHECK_TYPEINFERER)
669 GENERATED /* returnAddress is not allowed */
670 GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo))
671 GENERATED VERIFY_ERROR("Illegal instruction: CHECKCAST on non-reference");
675 GENERATED /* XXX only if narrower */
676 GENERATED if (!typeinfo_init_class(&(DST->typeinfo),IPTR->sx.s23.s3.c))
679 # line 680 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
681 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
690 GENERATED case ICMD_MULTIANEWARRAY:
691 GENERATED /* (.--A) */
692 GENERATED maythrow = true;
694 # define OP1 VAROP(iptr->s1)
696 # define DST VAROP(iptr->dst)
699 # line 633 "src/vm/jit/verify/icmds.cpp"
700 GENERATED if (!handle_multianewarray(STATE))
703 # line 704 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
705 GENERATED VAROP(iptr->dst)->type = TYPE_ADR;
714 GENERATED case ICMD_BUILTIN:
715 GENERATED /* (.--1|.--2|.--) */
716 GENERATED maythrow = true;
718 # define OP1 VAROP(iptr->s1)
721 # line 648 "src/vm/jit/verify/icmds.cpp"
722 GENERATED TYPECHECK_COUNT(stat_ins_builtin);
723 GENERATED if (!handle_builtin(state))
726 # line 727 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"