0a12ee326e3a942fe207b1e1a8a28f6b4ae2ce79
[cacao.git] / src / vm / jit / verify / typecheck-typeinferer-gen.inc
1 #define GENERATED
2
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:
8   GENERATED     /* (--) */
9   GENERATED     break;
10   GENERATED  
11   GENERATED  
12   GENERATED  case ICMD_ACONST:
13   GENERATED     /* (--A) */
14   GENERATED     maythrow = true;
15   GENERATED  
16 #               define DST  VAROP(iptr->dst)
17   GENERATED  
18   GENERATED  
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);
23   GENERATED     }
24   GENERATED     else {
25   GENERATED             if (IPTR->sx.val.anyptr == NULL)
26   GENERATED                     TYPEINFO_INIT_NULLTYPE(DST->typeinfo);
27   GENERATED             else {
28   GENERATED                     /* string constant (or constant for builtin function) */
29   GENERATED                     typeinfo_init_classinfo(&(DST->typeinfo),class_java_lang_String);
30   GENERATED             }
31   GENERATED     }
32   GENERATED  
33 #               line 34 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
34   GENERATED  
35   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
36   GENERATED     break;
37   GENERATED  
38   GENERATED  
39 #               undef DST
40   GENERATED  
41   GENERATED  
42   GENERATED  case ICMD_CHECKNULL:
43   GENERATED     /* (A--A) */
44   GENERATED     maythrow = true;
45   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
46   GENERATED     break;
47   GENERATED  
48   GENERATED  
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;
86   GENERATED     break;
87   GENERATED  
88   GENERATED  
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;
117   GENERATED     break;
118   GENERATED  
119   GENERATED  
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;
132   GENERATED     break;
133   GENERATED  
134   GENERATED  
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;
147   GENERATED     break;
148   GENERATED  
149   GENERATED  
150   GENERATED  case ICMD_COPY:
151   GENERATED     /* (1--1) */
152   GENERATED  
153 #               define OP1  VAROP(iptr->s1)
154   GENERATED  
155 #               define DST  VAROP(iptr->dst)
156   GENERATED  
157   GENERATED  
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;
162   GENERATED  
163 #               line 164 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
164   GENERATED  
165   GENERATED     break;
166   GENERATED  
167   GENERATED  
168 #               undef OP1
169   GENERATED  
170 #               undef DST
171   GENERATED  
172   GENERATED  
173   GENERATED  case ICMD_MOVE:
174   GENERATED     /* (1--1) */
175   GENERATED  
176 #               define OP1  VAROP(iptr->s1)
177   GENERATED  
178 #               define DST  VAROP(iptr->dst)
179   GENERATED  
180   GENERATED  
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;
185   GENERATED  
186 #               line 187 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
187   GENERATED  
188   GENERATED     break;
189   GENERATED  
190   GENERATED  
191 #               undef OP1
192   GENERATED  
193 #               undef DST
194   GENERATED  
195   GENERATED  
196   GENERATED  case ICMD_ILOAD:
197   GENERATED     /* (--I) */
198   GENERATED     VAROP(iptr->dst)->type = TYPE_INT;
199   GENERATED     break;
200   GENERATED  
201   GENERATED  
202   GENERATED  case ICMD_LLOAD:
203   GENERATED     /* (--L) */
204   GENERATED     VAROP(iptr->dst)->type = TYPE_LNG;
205   GENERATED     break;
206   GENERATED  
207   GENERATED  
208   GENERATED  case ICMD_FLOAD:
209   GENERATED     /* (--F) */
210   GENERATED     VAROP(iptr->dst)->type = TYPE_FLT;
211   GENERATED     break;
212   GENERATED  
213   GENERATED  
214   GENERATED  case ICMD_DLOAD:
215   GENERATED     /* (--D) */
216   GENERATED     VAROP(iptr->dst)->type = TYPE_DBL;
217   GENERATED     break;
218   GENERATED  
219   GENERATED  
220   GENERATED  case ICMD_ALOAD:
221   GENERATED     /* (--A) */
222   GENERATED  
223 #               define OP1  VAROP(IPTR->s1)
224   GENERATED  
225 #               define DST  VAROP(iptr->dst)
226   GENERATED  
227   GENERATED  
228 #               line 89 "src/vm/jit/verify/icmds.cpp"
229   GENERATED     TYPECHECK_COUNT(stat_ins_aload);
230   GENERATED  
231   GENERATED  
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");
236   GENERATED     }
237   GENERATED  
238 #            endif
239   GENERATED     TYPEINFO_COPY(OP1->typeinfo,DST->typeinfo);
240   GENERATED  
241 #               line 242 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
242   GENERATED  
243   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
244   GENERATED     break;
245   GENERATED  
246   GENERATED  
247 #               undef OP1
248   GENERATED  
249 #               undef DST
250   GENERATED  
251   GENERATED  
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;
263   GENERATED     break;
264   GENERATED  
265   GENERATED  
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;
272   GENERATED     break;
273   GENERATED  
274   GENERATED  
275   GENERATED  case ICMD_FALOAD:
276   GENERATED     /* (AI--F) */
277   GENERATED     maythrow = true;
278   GENERATED     VAROP(iptr->dst)->type = TYPE_FLT;
279   GENERATED     break;
280   GENERATED  
281   GENERATED  
282   GENERATED  case ICMD_DALOAD:
283   GENERATED     /* (AI--D) */
284   GENERATED     maythrow = true;
285   GENERATED     VAROP(iptr->dst)->type = TYPE_DBL;
286   GENERATED     break;
287   GENERATED  
288   GENERATED  
289   GENERATED  case ICMD_AALOAD:
290   GENERATED     /* (AI--A) */
291   GENERATED     maythrow = true;
292   GENERATED  
293 #               define OP1  VAROP(iptr->s1)
294   GENERATED  
295 #               define DST  VAROP(iptr->dst)
296   GENERATED  
297   GENERATED  
298 #               line 111 "src/vm/jit/verify/icmds.cpp"
299   GENERATED  
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");
303   GENERATED  
304 #            endif
305   GENERATED  
306   GENERATED     if (!typeinfo_init_component(&OP1->typeinfo,&DST->typeinfo))
307   GENERATED             EXCEPTION;
308   GENERATED  
309 #               line 310 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
310   GENERATED  
311   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
312   GENERATED     break;
313   GENERATED  
314   GENERATED  
315 #               undef OP1
316   GENERATED  
317 #               undef DST
318   GENERATED  
319   GENERATED  
320   GENERATED  case ICMD_ISTORE:
321   GENERATED     /* (I--) */
322   GENERATED     STORE_LOCAL(TYPE_INT, IPTR->dst.varindex);
323   GENERATED     break;
324   GENERATED  
325   GENERATED  
326   GENERATED  case ICMD_LSTORE:
327   GENERATED     /* (L--) */
328   GENERATED     STORE_LOCAL_2_WORD(TYPE_LNG, IPTR->dst.varindex);
329   GENERATED     break;
330   GENERATED  
331   GENERATED  
332   GENERATED  case ICMD_FSTORE:
333   GENERATED     /* (F--) */
334   GENERATED     STORE_LOCAL(TYPE_FLT, IPTR->dst.varindex);
335   GENERATED     break;
336   GENERATED  
337   GENERATED  
338   GENERATED  case ICMD_DSTORE:
339   GENERATED     /* (D--) */
340   GENERATED     STORE_LOCAL_2_WORD(TYPE_DBL, IPTR->dst.varindex);
341   GENERATED     break;
342   GENERATED  
343   GENERATED  
344   GENERATED  case ICMD_ASTORE:
345   GENERATED     /* (A--|R--) */
346   GENERATED     STORE_LOCAL(VAROP(iptr->s1)->type, IPTR->dst.varindex);
347   GENERATED  
348 #               define DST  VAROP(IPTR->dst)
349   GENERATED  
350 #               define OP1  VAROP(iptr->s1)
351   GENERATED  
352   GENERATED  
353 #               line 104 "src/vm/jit/verify/icmds.cpp"
354   GENERATED     TYPEINFO_COPY(OP1->typeinfo, DST->typeinfo);
355   GENERATED  
356 #               line 357 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
357   GENERATED  
358   GENERATED     break;
359   GENERATED  
360   GENERATED  
361 #               undef DST
362   GENERATED  
363 #               undef OP1
364   GENERATED  
365   GENERATED  
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--) */
395   GENERATED  
396 #               define OP1  VAROP(iptr->s1)
397   GENERATED  
398   GENERATED  
399 #               line 404 "src/vm/jit/verify/icmds.cpp"
400   GENERATED     /* {RESULTNOW} */
401   GENERATED     TYPECHECK_COUNT(stat_ins_branch);
402   GENERATED  
403   GENERATED     /* propagate stack and variables to the target block */
404   GENERATED     REACH(IPTR->dst);
405   GENERATED  
406 #               line 407 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
407   GENERATED  
408   GENERATED     break;
409   GENERATED  
410   GENERATED  
411 #               undef OP1
412   GENERATED  
413   GENERATED  
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;
436   GENERATED     break;
437   GENERATED  
438   GENERATED  
439   GENERATED  case ICMD_POP:
440   GENERATED     /* (1--) */
441   GENERATED     break;
442   GENERATED  
443   GENERATED  
444   GENERATED  case ICMD_POP2:
445   GENERATED     /* (11--|2--) */
446   GENERATED     break;
447   GENERATED  
448   GENERATED  
449   GENERATED  case ICMD_IINC:
450   GENERATED     /* (--) */
451   GENERATED     break;
452   GENERATED  
453   GENERATED  
454   GENERATED  case ICMD_GOTO:
455   GENERATED     /* (--) */
456   GENERATED     superblockend = true;
457   GENERATED  
458   GENERATED  
459 #               line 386 "src/vm/jit/verify/icmds.cpp"
460   GENERATED     /* {RESULTNOW} */
461   GENERATED     TYPECHECK_COUNT(stat_ins_branch);
462   GENERATED  
463   GENERATED     /* propagate stack and variables to the target block */
464   GENERATED     REACH(IPTR->dst);
465   GENERATED  
466 #               line 467 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
467   GENERATED  
468   GENERATED     break;
469   GENERATED  
470   GENERATED  
471   GENERATED  case ICMD_JSR:
472   GENERATED     /* (--R) */
473   GENERATED     superblockend = true;
474   GENERATED  
475 #               define DST  VAROP(iptr->dst)
476   GENERATED  
477   GENERATED  
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);
481   GENERATED  
482 #               line 483 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
483   GENERATED  
484   GENERATED     VAROP(iptr->dst)->type = TYPE_RET;
485   GENERATED     break;
486   GENERATED  
487   GENERATED  
488 #               undef DST
489   GENERATED  
490   GENERATED  
491   GENERATED  case ICMD_RET:
492   GENERATED     /* (--) */
493   GENERATED     superblockend = true;
494   GENERATED  
495   GENERATED  
496 #               line 568 "src/vm/jit/verify/icmds.cpp"
497   GENERATED  
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");
502   GENERATED  
503 #            endif
504   GENERATED     REACH(IPTR->dst);
505   GENERATED  
506 #               line 507 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
507   GENERATED  
508   GENERATED     break;
509   GENERATED  
510   GENERATED  
511   GENERATED  case ICMD_TABLESWITCH:
512   GENERATED     /* (I--) */
513   GENERATED     superblockend = true;
514   GENERATED  
515 #               define OP1  VAROP(iptr->s1)
516   GENERATED  
517   GENERATED  
518 #               line 427 "src/vm/jit/verify/icmds.cpp"
519   GENERATED     /* {RESULTNOW} */
520   GENERATED     TYPECHECK_COUNT(stat_ins_switch);
521   GENERATED  
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 */
525   GENERATED  
526   GENERATED     while (--i >= 0) {
527   GENERATED             REACH(*table);
528   GENERATED             table++;
529   GENERATED     }
530   GENERATED  
531   GENERATED     LOG("switch done");
532   GENERATED  
533 #               line 534 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
534   GENERATED  
535   GENERATED     break;
536   GENERATED  
537   GENERATED  
538 #               undef OP1
539   GENERATED  
540   GENERATED  
541   GENERATED  case ICMD_LOOKUPSWITCH:
542   GENERATED     /* (I--) */
543   GENERATED     superblockend = true;
544   GENERATED  
545 #               define OP1  VAROP(iptr->s1)
546   GENERATED  
547   GENERATED  
548 #               line 443 "src/vm/jit/verify/icmds.cpp"
549   GENERATED     /* {RESULTNOW} */
550   GENERATED     TYPECHECK_COUNT(stat_ins_switch);
551   GENERATED  
552   GENERATED     lookup = IPTR->dst.lookup;
553   GENERATED     i = IPTR->sx.s23.s2.lookupcount;
554   GENERATED     REACH(IPTR->sx.s23.s3.lookupdefault);
555   GENERATED  
556   GENERATED     while (--i >= 0) {
557   GENERATED             REACH(lookup->target);
558   GENERATED             lookup++;
559   GENERATED     }
560   GENERATED  
561   GENERATED     LOG("switch done");
562   GENERATED  
563 #               line 564 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
564   GENERATED  
565   GENERATED     break;
566   GENERATED  
567   GENERATED  
568 #               undef OP1
569   GENERATED  
570   GENERATED  
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;
578   GENERATED     break;
579   GENERATED  
580   GENERATED  
581   GENERATED  case ICMD_ARETURN:
582   GENERATED  case ICMD_ATHROW:
583   GENERATED     /* (A--) */
584   GENERATED     maythrow = true;
585   GENERATED     superblockend = true;
586   GENERATED     break;
587   GENERATED  
588   GENERATED  
589   GENERATED  case ICMD_GETSTATIC:
590   GENERATED     /* (--1|--2) */
591   GENERATED     maythrow = true;
592   GENERATED  
593 #               define DST  VAROP(iptr->dst)
594   GENERATED  
595   GENERATED  
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;
600   GENERATED  
601 #               line 602 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
602   GENERATED  
603   GENERATED     break;
604   GENERATED  
605   GENERATED  
606 #               undef DST
607   GENERATED  
608   GENERATED  
609   GENERATED  case ICMD_GETFIELD:
610   GENERATED     /* (A--1|A--2) */
611   GENERATED     maythrow = true;
612   GENERATED  
613 #               define OP1  VAROP(iptr->s1)
614   GENERATED  
615 #               define DST  VAROP(iptr->dst)
616   GENERATED  
617   GENERATED  
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;
622   GENERATED  
623 #               line 624 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
624   GENERATED  
625   GENERATED     break;
626   GENERATED  
627   GENERATED  
628 #               undef OP1
629   GENERATED  
630 #               undef DST
631   GENERATED  
632   GENERATED  
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;
639   GENERATED  
640 #               define OP1  VAROP(iptr->s1)
641   GENERATED  
642   GENERATED  
643 #               line 590 "src/vm/jit/verify/icmds.cpp"
644   GENERATED     TYPECHECK_COUNT(stat_ins_invoke);
645   GENERATED     if (!handle_invocation(state))
646   GENERATED             EXCEPTION;
647   GENERATED     TYPECHECK_COUNTIF(INSTRUCTION_IS_UNRESOLVED(IPTR), stat_ins_invoke_unresolved);
648   GENERATED  
649 #               line 650 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
650   GENERATED  
651   GENERATED     break;
652   GENERATED  
653   GENERATED  
654 #               undef OP1
655   GENERATED  
656   GENERATED  
657   GENERATED  case ICMD_CHECKCAST:
658   GENERATED     /* (A--A) */
659   GENERATED     maythrow = true;
660   GENERATED  
661 #               define OP1  VAROP(iptr->s1)
662   GENERATED  
663 #               define DST  VAROP(iptr->dst)
664   GENERATED  
665   GENERATED  
666 #               line 363 "src/vm/jit/verify/icmds.cpp"
667   GENERATED  
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");
672   GENERATED  
673 #            endif
674   GENERATED  
675   GENERATED      /* XXX only if narrower */
676   GENERATED     if (!typeinfo_init_class(&(DST->typeinfo),IPTR->sx.s23.s3.c))
677   GENERATED             EXCEPTION;
678   GENERATED  
679 #               line 680 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
680   GENERATED  
681   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
682   GENERATED     break;
683   GENERATED  
684   GENERATED  
685 #               undef OP1
686   GENERATED  
687 #               undef DST
688   GENERATED  
689   GENERATED  
690   GENERATED  case ICMD_MULTIANEWARRAY:
691   GENERATED     /* (.--A) */
692   GENERATED     maythrow = true;
693   GENERATED  
694 #               define OP1  VAROP(iptr->s1)
695   GENERATED  
696 #               define DST  VAROP(iptr->dst)
697   GENERATED  
698   GENERATED  
699 #               line 633 "src/vm/jit/verify/icmds.cpp"
700   GENERATED     if (!handle_multianewarray(STATE))
701   GENERATED             EXCEPTION;
702   GENERATED  
703 #               line 704 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
704   GENERATED  
705   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
706   GENERATED     break;
707   GENERATED  
708   GENERATED  
709 #               undef OP1
710   GENERATED  
711 #               undef DST
712   GENERATED  
713   GENERATED  
714   GENERATED  case ICMD_BUILTIN:
715   GENERATED     /* (.--1|.--2|.--) */
716   GENERATED     maythrow = true;
717   GENERATED  
718 #               define OP1  VAROP(iptr->s1)
719   GENERATED  
720   GENERATED  
721 #               line 648 "src/vm/jit/verify/icmds.cpp"
722   GENERATED     TYPECHECK_COUNT(stat_ins_builtin);
723   GENERATED     if (!handle_builtin(state))
724   GENERATED             EXCEPTION;
725   GENERATED  
726 #               line 727 "src/vm/jit/verify/typecheck-typeinferer-gen.inc"
727   GENERATED  
728   GENERATED     break;
729   GENERATED  
730   GENERATED  
731 #               undef OP1
732   GENERATED  
733   GENERATED  
734 #undef GENERATED
735 /* vim:filetype=c:
736  */