Merged with tip.
[cacao.git] / src / vm / jit / verify / typecheck-variablesbased-gen.inc
1 #define GENERATED
2
3   GENERATED  case ICMD_NOP:
4   GENERATED  case ICMD_INLINE_START:
5   GENERATED  case ICMD_INLINE_END:
6   GENERATED  case ICMD_INLINE_BODY:
7   GENERATED     /* (--) */
8   GENERATED     break;
9   GENERATED  
10   GENERATED  
11   GENERATED  case ICMD_ACONST:
12   GENERATED     /* (--A) */
13   GENERATED     maythrow = true;
14   GENERATED  
15 #               define DST  VAROP(iptr->dst)
16   GENERATED  
17   GENERATED  
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);
22   GENERATED     }
23   GENERATED     else {
24   GENERATED             if (IPTR->sx.val.anyptr == NULL)
25   GENERATED                     TYPEINFO_INIT_NULLTYPE(DST->typeinfo);
26   GENERATED             else {
27   GENERATED                     /* string constant (or constant for builtin function) */
28   GENERATED                     typeinfo_init_classinfo(&(DST->typeinfo),class_java_lang_String);
29   GENERATED             }
30   GENERATED     }
31   GENERATED  
32 #               line 33 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
33   GENERATED  
34   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
35   GENERATED     break;
36   GENERATED  
37   GENERATED  
38 #               undef DST
39   GENERATED  
40   GENERATED  
41   GENERATED  case ICMD_CHECKNULL:
42   GENERATED     /* (A--A) */
43   GENERATED     maythrow = true;
44   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
45   GENERATED     break;
46   GENERATED  
47   GENERATED  
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;
85   GENERATED     break;
86   GENERATED  
87   GENERATED  
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;
116   GENERATED     break;
117   GENERATED  
118   GENERATED  
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;
131   GENERATED     break;
132   GENERATED  
133   GENERATED  
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;
146   GENERATED     break;
147   GENERATED  
148   GENERATED  
149   GENERATED  case ICMD_COPY:
150   GENERATED     /* (1--1) */
151   GENERATED  
152 #               define OP1  VAROP(iptr->s1)
153   GENERATED  
154 #               define DST  VAROP(iptr->dst)
155   GENERATED  
156   GENERATED  
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;
161   GENERATED  
162 #               line 163 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
163   GENERATED  
164   GENERATED     break;
165   GENERATED  
166   GENERATED  
167 #               undef OP1
168   GENERATED  
169 #               undef DST
170   GENERATED  
171   GENERATED  
172   GENERATED  case ICMD_MOVE:
173   GENERATED     /* (1--1) */
174   GENERATED  
175 #               define OP1  VAROP(iptr->s1)
176   GENERATED  
177 #               define DST  VAROP(iptr->dst)
178   GENERATED  
179   GENERATED  
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;
184   GENERATED  
185 #               line 186 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
186   GENERATED  
187   GENERATED     break;
188   GENERATED  
189   GENERATED  
190 #               undef OP1
191   GENERATED  
192 #               undef DST
193   GENERATED  
194   GENERATED  
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;
199   GENERATED     break;
200   GENERATED  
201   GENERATED  
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;
206   GENERATED     break;
207   GENERATED  
208   GENERATED  
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;
213   GENERATED     break;
214   GENERATED  
215   GENERATED  
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;
220   GENERATED     break;
221   GENERATED  
222   GENERATED  
223   GENERATED  case ICMD_ALOAD:
224   GENERATED     /* (--A) */
225   GENERATED     CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_ADR);
226   GENERATED  
227 #               define OP1  VAROP(IPTR->s1)
228   GENERATED  
229 #               define DST  VAROP(iptr->dst)
230   GENERATED  
231   GENERATED  
232 #               line 91 "src/vm/jit/verify/icmds.c"
233   GENERATED     TYPECHECK_COUNT(stat_ins_aload);
234   GENERATED  
235   GENERATED  
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");
240   GENERATED     }
241   GENERATED  
242 #            endif
243   GENERATED     TYPEINFO_COPY(OP1->typeinfo,DST->typeinfo);
244   GENERATED  
245 #               line 246 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
246   GENERATED  
247   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
248   GENERATED     break;
249   GENERATED  
250   GENERATED  
251 #               undef OP1
252   GENERATED  
253 #               undef DST
254   GENERATED  
255   GENERATED  
256   GENERATED  case ICMD_IALOAD:
257   GENERATED     /* (AI--I) */
258   GENERATED     maythrow = true;
259   GENERATED  
260 #               define OP1  VAROP(iptr->s1)
261   GENERATED  
262 #               define DST  VAROP(iptr->dst)
263   GENERATED  
264   GENERATED  
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");
268   GENERATED  
269 #               line 270 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
270   GENERATED  
271   GENERATED     VAROP(iptr->dst)->type = TYPE_INT;
272   GENERATED     break;
273   GENERATED  
274   GENERATED  
275 #               undef OP1
276   GENERATED  
277 #               undef DST
278   GENERATED  
279   GENERATED  
280   GENERATED  case ICMD_LALOAD:
281   GENERATED     /* (AI--L) */
282   GENERATED     maythrow = true;
283   GENERATED  
284 #               define OP1  VAROP(iptr->s1)
285   GENERATED  
286 #               define DST  VAROP(iptr->dst)
287   GENERATED  
288   GENERATED  
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");
292   GENERATED  
293 #               line 294 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
294   GENERATED  
295   GENERATED     VAROP(iptr->dst)->type = TYPE_LNG;
296   GENERATED     break;
297   GENERATED  
298   GENERATED  
299 #               undef OP1
300   GENERATED  
301 #               undef DST
302   GENERATED  
303   GENERATED  
304   GENERATED  case ICMD_FALOAD:
305   GENERATED     /* (AI--F) */
306   GENERATED     maythrow = true;
307   GENERATED  
308 #               define OP1  VAROP(iptr->s1)
309   GENERATED  
310 #               define DST  VAROP(iptr->dst)
311   GENERATED  
312   GENERATED  
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");
316   GENERATED  
317 #               line 318 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
318   GENERATED  
319   GENERATED     VAROP(iptr->dst)->type = TYPE_FLT;
320   GENERATED     break;
321   GENERATED  
322   GENERATED  
323 #               undef OP1
324   GENERATED  
325 #               undef DST
326   GENERATED  
327   GENERATED  
328   GENERATED  case ICMD_DALOAD:
329   GENERATED     /* (AI--D) */
330   GENERATED     maythrow = true;
331   GENERATED  
332 #               define OP1  VAROP(iptr->s1)
333   GENERATED  
334 #               define DST  VAROP(iptr->dst)
335   GENERATED  
336   GENERATED  
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");
340   GENERATED  
341 #               line 342 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
342   GENERATED  
343   GENERATED     VAROP(iptr->dst)->type = TYPE_DBL;
344   GENERATED     break;
345   GENERATED  
346   GENERATED  
347 #               undef OP1
348   GENERATED  
349 #               undef DST
350   GENERATED  
351   GENERATED  
352   GENERATED  case ICMD_AALOAD:
353   GENERATED     /* (AI--A) */
354   GENERATED     maythrow = true;
355   GENERATED  
356 #               define OP1  VAROP(iptr->s1)
357   GENERATED  
358 #               define DST  VAROP(iptr->dst)
359   GENERATED  
360   GENERATED  
361 #               line 113 "src/vm/jit/verify/icmds.c"
362   GENERATED  
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");
366   GENERATED  
367 #            endif
368   GENERATED  
369   GENERATED     if (!typeinfo_init_component(&OP1->typeinfo,&DST->typeinfo))
370   GENERATED             EXCEPTION;
371   GENERATED  
372 #               line 373 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
373   GENERATED  
374   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
375   GENERATED     break;
376   GENERATED  
377   GENERATED  
378 #               undef OP1
379   GENERATED  
380 #               undef DST
381   GENERATED  
382   GENERATED  
383   GENERATED  case ICMD_BALOAD:
384   GENERATED     /* (AI--I) */
385   GENERATED     maythrow = true;
386   GENERATED  
387 #               define OP1  VAROP(iptr->s1)
388   GENERATED  
389 #               define DST  VAROP(iptr->dst)
390   GENERATED  
391   GENERATED  
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");
396   GENERATED  
397 #               line 398 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
398   GENERATED  
399   GENERATED     VAROP(iptr->dst)->type = TYPE_INT;
400   GENERATED     break;
401   GENERATED  
402   GENERATED  
403 #               undef OP1
404   GENERATED  
405 #               undef DST
406   GENERATED  
407   GENERATED  
408   GENERATED  case ICMD_CALOAD:
409   GENERATED     /* (AI--I) */
410   GENERATED     maythrow = true;
411   GENERATED  
412 #               define OP1  VAROP(iptr->s1)
413   GENERATED  
414 #               define DST  VAROP(iptr->dst)
415   GENERATED  
416   GENERATED  
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");
420   GENERATED  
421 #               line 422 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
422   GENERATED  
423   GENERATED     VAROP(iptr->dst)->type = TYPE_INT;
424   GENERATED     break;
425   GENERATED  
426   GENERATED  
427 #               undef OP1
428   GENERATED  
429 #               undef DST
430   GENERATED  
431   GENERATED  
432   GENERATED  case ICMD_SALOAD:
433   GENERATED     /* (AI--I) */
434   GENERATED     maythrow = true;
435   GENERATED  
436 #               define OP1  VAROP(iptr->s1)
437   GENERATED  
438 #               define DST  VAROP(iptr->dst)
439   GENERATED  
440   GENERATED  
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");
444   GENERATED  
445 #               line 446 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
446   GENERATED  
447   GENERATED     VAROP(iptr->dst)->type = TYPE_INT;
448   GENERATED     break;
449   GENERATED  
450   GENERATED  
451 #               undef OP1
452   GENERATED  
453 #               undef DST
454   GENERATED  
455   GENERATED  
456   GENERATED  case ICMD_ISTORE:
457   GENERATED     /* (I--) */
458   GENERATED     STORE_LOCAL(TYPE_INT, IPTR->dst.varindex);
459   GENERATED     break;
460   GENERATED  
461   GENERATED  
462   GENERATED  case ICMD_LSTORE:
463   GENERATED     /* (L--) */
464   GENERATED     STORE_LOCAL_2_WORD(TYPE_LNG, IPTR->dst.varindex);
465   GENERATED     break;
466   GENERATED  
467   GENERATED  
468   GENERATED  case ICMD_FSTORE:
469   GENERATED     /* (F--) */
470   GENERATED     STORE_LOCAL(TYPE_FLT, IPTR->dst.varindex);
471   GENERATED     break;
472   GENERATED  
473   GENERATED  
474   GENERATED  case ICMD_DSTORE:
475   GENERATED     /* (D--) */
476   GENERATED     STORE_LOCAL_2_WORD(TYPE_DBL, IPTR->dst.varindex);
477   GENERATED     break;
478   GENERATED  
479   GENERATED  
480   GENERATED  case ICMD_ASTORE:
481   GENERATED     /* (A--|R--) */
482   GENERATED     STORE_LOCAL(VAROP(iptr->s1)->type, IPTR->dst.varindex);
483   GENERATED  
484 #               define DST  VAROP(IPTR->dst)
485   GENERATED  
486 #               define OP1  VAROP(iptr->s1)
487   GENERATED  
488   GENERATED  
489 #               line 106 "src/vm/jit/verify/icmds.c"
490   GENERATED     TYPEINFO_COPY(OP1->typeinfo, DST->typeinfo);
491   GENERATED  
492 #               line 493 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
493   GENERATED  
494   GENERATED     break;
495   GENERATED  
496   GENERATED  
497 #               undef DST
498   GENERATED  
499 #               undef OP1
500   GENERATED  
501   GENERATED  
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--) */
531   GENERATED  
532 #               define OP1  VAROP(iptr->s1)
533   GENERATED  
534   GENERATED  
535 #               line 406 "src/vm/jit/verify/icmds.c"
536   GENERATED     /* {RESULTNOW} */
537   GENERATED     TYPECHECK_COUNT(stat_ins_branch);
538   GENERATED  
539   GENERATED     /* propagate stack and variables to the target block */
540   GENERATED     REACH(IPTR->dst);
541   GENERATED  
542 #               line 543 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
543   GENERATED  
544   GENERATED     break;
545   GENERATED  
546   GENERATED  
547 #               undef OP1
548   GENERATED  
549   GENERATED  
550   GENERATED  case ICMD_IASTORE:
551   GENERATED     /* (AII--) */
552   GENERATED     maythrow = true;
553   GENERATED  
554 #               define OP1  VAROP(iptr->s1)
555   GENERATED  
556   GENERATED  
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");
560   GENERATED  
561 #               line 562 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
562   GENERATED  
563   GENERATED     break;
564   GENERATED  
565   GENERATED  
566 #               undef OP1
567   GENERATED  
568   GENERATED  
569   GENERATED  case ICMD_LASTORE:
570   GENERATED     /* (AIL--) */
571   GENERATED     maythrow = true;
572   GENERATED  
573 #               define OP1  VAROP(iptr->s1)
574   GENERATED  
575   GENERATED  
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");
579   GENERATED  
580 #               line 581 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
581   GENERATED  
582   GENERATED     break;
583   GENERATED  
584   GENERATED  
585 #               undef OP1
586   GENERATED  
587   GENERATED  
588   GENERATED  case ICMD_FASTORE:
589   GENERATED     /* (AIF--) */
590   GENERATED     maythrow = true;
591   GENERATED  
592 #               define OP1  VAROP(iptr->s1)
593   GENERATED  
594   GENERATED  
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");
598   GENERATED  
599 #               line 600 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
600   GENERATED  
601   GENERATED     break;
602   GENERATED  
603   GENERATED  
604 #               undef OP1
605   GENERATED  
606   GENERATED  
607   GENERATED  case ICMD_DASTORE:
608   GENERATED     /* (AID--) */
609   GENERATED     maythrow = true;
610   GENERATED  
611 #               define OP1  VAROP(iptr->s1)
612   GENERATED  
613   GENERATED  
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");
617   GENERATED  
618 #               line 619 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
619   GENERATED  
620   GENERATED     break;
621   GENERATED  
622   GENERATED  
623 #               undef OP1
624   GENERATED  
625   GENERATED  
626   GENERATED  case ICMD_AASTORE:
627   GENERATED     /* (AIA--) */
628   GENERATED     maythrow = true;
629   GENERATED  
630 #               define OP1  VAROP(iptr->s1)
631   GENERATED  
632   GENERATED  
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");
640   GENERATED  
641 #               line 642 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
642   GENERATED  
643   GENERATED     break;
644   GENERATED  
645   GENERATED  
646 #               undef OP1
647   GENERATED  
648   GENERATED  
649   GENERATED  case ICMD_BASTORE:
650   GENERATED     /* (AII--) */
651   GENERATED     maythrow = true;
652   GENERATED  
653 #               define OP1  VAROP(iptr->s1)
654   GENERATED  
655   GENERATED  
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");
660   GENERATED  
661 #               line 662 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
662   GENERATED  
663   GENERATED     break;
664   GENERATED  
665   GENERATED  
666 #               undef OP1
667   GENERATED  
668   GENERATED  
669   GENERATED  case ICMD_CASTORE:
670   GENERATED     /* (AII--) */
671   GENERATED     maythrow = true;
672   GENERATED  
673 #               define OP1  VAROP(iptr->s1)
674   GENERATED  
675   GENERATED  
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");
679   GENERATED  
680 #               line 681 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
681   GENERATED  
682   GENERATED     break;
683   GENERATED  
684   GENERATED  
685 #               undef OP1
686   GENERATED  
687   GENERATED  
688   GENERATED  case ICMD_SASTORE:
689   GENERATED     /* (AII--) */
690   GENERATED     maythrow = true;
691   GENERATED  
692 #               define OP1  VAROP(iptr->s1)
693   GENERATED  
694   GENERATED  
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");
698   GENERATED  
699 #               line 700 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
700   GENERATED  
701   GENERATED     break;
702   GENERATED  
703   GENERATED  
704 #               undef OP1
705   GENERATED  
706   GENERATED  
707   GENERATED  case ICMD_POP:
708   GENERATED     /* (1--) */
709   GENERATED     break;
710   GENERATED  
711   GENERATED  
712   GENERATED  case ICMD_POP2:
713   GENERATED     /* (11--|2--) */
714   GENERATED     break;
715   GENERATED  
716   GENERATED  
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;
722   GENERATED     break;
723   GENERATED  
724   GENERATED  
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;
730   GENERATED     break;
731   GENERATED  
732   GENERATED  
733   GENERATED  case ICMD_IINC:
734   GENERATED     /* (--) */
735   GENERATED     CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_INT);
736   GENERATED     break;
737   GENERATED  
738   GENERATED  
739   GENERATED  case ICMD_GOTO:
740   GENERATED     /* (--) */
741   GENERATED     superblockend = true;
742   GENERATED  
743   GENERATED  
744 #               line 388 "src/vm/jit/verify/icmds.c"
745   GENERATED     /* {RESULTNOW} */
746   GENERATED     TYPECHECK_COUNT(stat_ins_branch);
747   GENERATED  
748   GENERATED     /* propagate stack and variables to the target block */
749   GENERATED     REACH(IPTR->dst);
750   GENERATED  
751 #               line 752 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
752   GENERATED  
753   GENERATED     break;
754   GENERATED  
755   GENERATED  
756   GENERATED  case ICMD_JSR:
757   GENERATED     /* (--R) */
758   GENERATED     superblockend = true;
759   GENERATED  
760 #               define DST  VAROP(iptr->dst)
761   GENERATED  
762   GENERATED  
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);
766   GENERATED  
767 #               line 768 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
768   GENERATED  
769   GENERATED     VAROP(iptr->dst)->type = TYPE_RET;
770   GENERATED     break;
771   GENERATED  
772   GENERATED  
773 #               undef DST
774   GENERATED  
775   GENERATED  
776   GENERATED  case ICMD_RET:
777   GENERATED     /* (--) */
778   GENERATED     superblockend = true;
779   GENERATED  
780   GENERATED  
781 #               line 570 "src/vm/jit/verify/icmds.c"
782   GENERATED  
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");
787   GENERATED  
788 #            endif
789   GENERATED     REACH(IPTR->dst);
790   GENERATED  
791 #               line 792 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
792   GENERATED  
793   GENERATED     break;
794   GENERATED  
795   GENERATED  
796   GENERATED  case ICMD_TABLESWITCH:
797   GENERATED     /* (I--) */
798   GENERATED     superblockend = true;
799   GENERATED  
800 #               define OP1  VAROP(iptr->s1)
801   GENERATED  
802   GENERATED  
803 #               line 429 "src/vm/jit/verify/icmds.c"
804   GENERATED     /* {RESULTNOW} */
805   GENERATED     TYPECHECK_COUNT(stat_ins_switch);
806   GENERATED  
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 */
810   GENERATED  
811   GENERATED     while (--i >= 0) {
812   GENERATED             REACH(*table);
813   GENERATED             table++;
814   GENERATED     }
815   GENERATED  
816   GENERATED     LOG("switch done");
817   GENERATED  
818 #               line 819 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
819   GENERATED  
820   GENERATED     break;
821   GENERATED  
822   GENERATED  
823 #               undef OP1
824   GENERATED  
825   GENERATED  
826   GENERATED  case ICMD_LOOKUPSWITCH:
827   GENERATED     /* (I--) */
828   GENERATED     superblockend = true;
829   GENERATED  
830 #               define OP1  VAROP(iptr->s1)
831   GENERATED  
832   GENERATED  
833 #               line 445 "src/vm/jit/verify/icmds.c"
834   GENERATED     /* {RESULTNOW} */
835   GENERATED     TYPECHECK_COUNT(stat_ins_switch);
836   GENERATED  
837   GENERATED     lookup = IPTR->dst.lookup;
838   GENERATED     i = IPTR->sx.s23.s2.lookupcount;
839   GENERATED     REACH(IPTR->sx.s23.s3.lookupdefault);
840   GENERATED  
841   GENERATED     while (--i >= 0) {
842   GENERATED             REACH(lookup->target);
843   GENERATED             lookup++;
844   GENERATED     }
845   GENERATED  
846   GENERATED     LOG("switch done");
847   GENERATED  
848 #               line 849 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
849   GENERATED  
850   GENERATED     break;
851   GENERATED  
852   GENERATED  
853 #               undef OP1
854   GENERATED  
855   GENERATED  
856   GENERATED  case ICMD_IRETURN:
857   GENERATED     /* (I--) */
858   GENERATED     superblockend = true;
859   GENERATED  
860 #               define OP1  VAROP(iptr->s1)
861   GENERATED  
862   GENERATED  
863 #               line 511 "src/vm/jit/verify/icmds.c"
864   GENERATED     if (STATE->returntype.type != TYPE_INT)
865   GENERATED             VERIFY_ERROR("Return type mismatch");
866   GENERATED  
867 #               line 868 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
868   GENERATED  
869   GENERATED     goto return_tail;
870   GENERATED  
871   GENERATED  
872 #               undef OP1
873   GENERATED  
874   GENERATED  
875   GENERATED  case ICMD_LRETURN:
876   GENERATED     /* (L--) */
877   GENERATED     superblockend = true;
878   GENERATED  
879 #               define OP1  VAROP(iptr->s1)
880   GENERATED  
881   GENERATED  
882 #               line 516 "src/vm/jit/verify/icmds.c"
883   GENERATED     if (STATE->returntype.type != TYPE_LNG)
884   GENERATED             VERIFY_ERROR("Return type mismatch");
885   GENERATED  
886 #               line 887 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
887   GENERATED  
888   GENERATED     goto return_tail;
889   GENERATED  
890   GENERATED  
891 #               undef OP1
892   GENERATED  
893   GENERATED  
894   GENERATED  case ICMD_FRETURN:
895   GENERATED     /* (F--) */
896   GENERATED     superblockend = true;
897   GENERATED  
898 #               define OP1  VAROP(iptr->s1)
899   GENERATED  
900   GENERATED  
901 #               line 521 "src/vm/jit/verify/icmds.c"
902   GENERATED     if (STATE->returntype.type != TYPE_FLT)
903   GENERATED             VERIFY_ERROR("Return type mismatch");
904   GENERATED  
905 #               line 906 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
906   GENERATED  
907   GENERATED     goto return_tail;
908   GENERATED  
909   GENERATED  
910 #               undef OP1
911   GENERATED  
912   GENERATED  
913   GENERATED  case ICMD_DRETURN:
914   GENERATED     /* (D--) */
915   GENERATED     superblockend = true;
916   GENERATED  
917 #               define OP1  VAROP(iptr->s1)
918   GENERATED  
919   GENERATED  
920 #               line 526 "src/vm/jit/verify/icmds.c"
921   GENERATED     if (STATE->returntype.type != TYPE_DBL)
922   GENERATED             VERIFY_ERROR("Return type mismatch");
923   GENERATED  
924 #               line 925 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
925   GENERATED  
926   GENERATED     goto return_tail;
927   GENERATED  
928   GENERATED  
929 #               undef OP1
930   GENERATED  
931   GENERATED  
932   GENERATED  case ICMD_ARETURN:
933   GENERATED     /* (A--) */
934   GENERATED     maythrow = true;
935   GENERATED     superblockend = true;
936   GENERATED  
937 #               define OP1  VAROP(iptr->s1)
938   GENERATED  
939   GENERATED  
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");
944   GENERATED  
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)
950   GENERATED             EXCEPTION;
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(
955   GENERATED                             METHOD,
956   GENERATED                             METHOD->parseddesc->returntype.classref,
957   GENERATED                             &OP1->typeinfo);
958   GENERATED             IPTR->flags.bits |= INS_FLAG_UNRESOLVED;
959   GENERATED     }
960   GENERATED  
961 #               line 962 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
962   GENERATED  
963   GENERATED     goto return_tail;
964   GENERATED  
965   GENERATED  
966 #               undef OP1
967   GENERATED  
968   GENERATED  
969   GENERATED  case ICMD_RETURN:
970   GENERATED     /* (--) */
971   GENERATED     superblockend = true;
972   GENERATED  
973   GENERATED  
974 #               line 531 "src/vm/jit/verify/icmds.c"
975   GENERATED     if (STATE->returntype.type != TYPE_VOID)
976   GENERATED             VERIFY_ERROR("Return type mismatch");
977   GENERATED  
978   GENERATED  return_tail:
979   GENERATED     TYPECHECK_COUNT(stat_ins_primitive_return);
980   GENERATED  
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");
984   GENERATED  
985 #            if defined(TYPECHECK_VARIABLESBASED)
986   GENERATED             if (!typevector_checktype(jd->var,STATE->numlocals-1,TYPE_INT))
987   GENERATED  
988 #            else
989   GENERATED             if (STATE->locals[STATE->numlocals-1].type != TYPE_INT)
990   GENERATED  
991 #            endif
992   GENERATED                     VERIFY_ERROR("<init> method does not initialize 'this'");
993   GENERATED     }
994   GENERATED  
995 #               line 996 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
996   GENERATED  
997   GENERATED     break;
998   GENERATED  
999   GENERATED  
1000   GENERATED  case ICMD_GETSTATIC:
1001   GENERATED     /* (--1|--2) */
1002   GENERATED     maythrow = true;
1003   GENERATED  
1004 #               define DST  VAROP(iptr->dst)
1005   GENERATED  
1006   GENERATED  
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;
1011   GENERATED  
1012 #               line 1013 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1013   GENERATED  
1014   GENERATED     break;
1015   GENERATED  
1016   GENERATED  
1017 #               undef DST
1018   GENERATED  
1019   GENERATED  
1020   GENERATED  case ICMD_PUTSTATIC:
1021   GENERATED     /* (1--|2--) */
1022   GENERATED     maythrow = true;
1023   GENERATED  
1024 #               define OP1  VAROP(iptr->s1)
1025   GENERATED  
1026   GENERATED  
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;
1031   GENERATED  
1032 #               line 1033 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1033   GENERATED  
1034   GENERATED     break;
1035   GENERATED  
1036   GENERATED  
1037 #               undef OP1
1038   GENERATED  
1039   GENERATED  
1040   GENERATED  case ICMD_GETFIELD:
1041   GENERATED     /* (A--1|A--2) */
1042   GENERATED     maythrow = true;
1043   GENERATED  
1044 #               define OP1  VAROP(iptr->s1)
1045   GENERATED  
1046 #               define DST  VAROP(iptr->dst)
1047   GENERATED  
1048   GENERATED  
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;
1053   GENERATED  
1054 #               line 1055 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1055   GENERATED  
1056   GENERATED     break;
1057   GENERATED  
1058   GENERATED  
1059 #               undef OP1
1060   GENERATED  
1061 #               undef DST
1062   GENERATED  
1063   GENERATED  
1064   GENERATED  case ICMD_PUTFIELD:
1065   GENERATED     /* (A1--|A2--) */
1066   GENERATED     maythrow = true;
1067   GENERATED  
1068 #               define OP1  VAROP(iptr->s1)
1069   GENERATED  
1070   GENERATED  
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;
1075   GENERATED  
1076 #               line 1077 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1077   GENERATED  
1078   GENERATED     break;
1079   GENERATED  
1080   GENERATED  
1081 #               undef OP1
1082   GENERATED  
1083   GENERATED  
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;
1090   GENERATED  
1091 #               define OP1  VAROP(iptr->s1)
1092   GENERATED  
1093   GENERATED  
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);
1099   GENERATED  
1100 #               line 1101 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1101   GENERATED  
1102   GENERATED     break;
1103   GENERATED  
1104   GENERATED  
1105 #               undef OP1
1106   GENERATED  
1107   GENERATED  
1108   GENERATED  case ICMD_ARRAYLENGTH:
1109   GENERATED     /* (A--I) */
1110   GENERATED     maythrow = true;
1111   GENERATED  
1112 #               define OP1  VAROP(iptr->s1)
1113   GENERATED  
1114 #               define DST  VAROP(iptr->dst)
1115   GENERATED  
1116   GENERATED  
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");
1121   GENERATED  
1122 #               line 1123 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1123   GENERATED  
1124   GENERATED     VAROP(iptr->dst)->type = TYPE_INT;
1125   GENERATED     break;
1126   GENERATED  
1127   GENERATED  
1128 #               undef OP1
1129   GENERATED  
1130 #               undef DST
1131   GENERATED  
1132   GENERATED  
1133   GENERATED  case ICMD_ATHROW:
1134   GENERATED     /* (A--) */
1135   GENERATED     maythrow = true;
1136   GENERATED     superblockend = true;
1137   GENERATED  
1138 #               define OP1  VAROP(iptr->s1)
1139   GENERATED  
1140   GENERATED  
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(
1153   GENERATED                             METHOD,
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;
1159   GENERATED     }
1160   GENERATED  
1161 #               line 1162 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1162   GENERATED  
1163   GENERATED     break;
1164   GENERATED  
1165   GENERATED  
1166 #               undef OP1
1167   GENERATED  
1168   GENERATED  
1169   GENERATED  case ICMD_CHECKCAST:
1170   GENERATED     /* (A--A) */
1171   GENERATED     maythrow = true;
1172   GENERATED  
1173 #               define OP1  VAROP(iptr->s1)
1174   GENERATED  
1175 #               define DST  VAROP(iptr->dst)
1176   GENERATED  
1177   GENERATED  
1178 #               line 365 "src/vm/jit/verify/icmds.c"
1179   GENERATED  
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");
1184   GENERATED  
1185 #            endif
1186   GENERATED  
1187   GENERATED      /* XXX only if narrower */
1188   GENERATED     if (!typeinfo_init_class(&(DST->typeinfo),IPTR->sx.s23.s3.c))
1189   GENERATED             EXCEPTION;
1190   GENERATED  
1191 #               line 1192 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1192   GENERATED  
1193   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
1194   GENERATED     break;
1195   GENERATED  
1196   GENERATED  
1197 #               undef OP1
1198   GENERATED  
1199 #               undef DST
1200   GENERATED  
1201   GENERATED  
1202   GENERATED  case ICMD_INSTANCEOF:
1203   GENERATED     /* (A--I) */
1204   GENERATED     maythrow = true;
1205   GENERATED  
1206 #               define OP1  VAROP(iptr->s1)
1207   GENERATED  
1208 #               define DST  VAROP(iptr->dst)
1209   GENERATED  
1210   GENERATED  
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");
1215   GENERATED  
1216   GENERATED     /* XXX should propagate type information to the following if-branches */
1217   GENERATED  
1218 #               line 1219 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1219   GENERATED  
1220   GENERATED     VAROP(iptr->dst)->type = TYPE_INT;
1221   GENERATED     break;
1222   GENERATED  
1223   GENERATED  
1224 #               undef OP1
1225   GENERATED  
1226 #               undef DST
1227   GENERATED  
1228   GENERATED  
1229   GENERATED  case ICMD_MULTIANEWARRAY:
1230   GENERATED     /* (.--A) */
1231   GENERATED     maythrow = true;
1232   GENERATED  
1233 #               define OP1  VAROP(iptr->s1)
1234   GENERATED  
1235 #               define DST  VAROP(iptr->dst)
1236   GENERATED  
1237   GENERATED  
1238 #               line 635 "src/vm/jit/verify/icmds.c"
1239   GENERATED     if (!handle_multianewarray(STATE))
1240   GENERATED             EXCEPTION;
1241   GENERATED  
1242 #               line 1243 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1243   GENERATED  
1244   GENERATED     VAROP(iptr->dst)->type = TYPE_ADR;
1245   GENERATED     break;
1246   GENERATED  
1247   GENERATED  
1248 #               undef OP1
1249   GENERATED  
1250 #               undef DST
1251   GENERATED  
1252   GENERATED  
1253   GENERATED  case ICMD_IASTORECONST:
1254   GENERATED     /* (AI--) */
1255   GENERATED     maythrow = true;
1256   GENERATED  
1257 #               define OP1  VAROP(iptr->s1)
1258   GENERATED  
1259   GENERATED  
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");
1263   GENERATED  
1264 #               line 1265 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1265   GENERATED  
1266   GENERATED     break;
1267   GENERATED  
1268   GENERATED  
1269 #               undef OP1
1270   GENERATED  
1271   GENERATED  
1272   GENERATED  case ICMD_LASTORECONST:
1273   GENERATED     /* (AI--) */
1274   GENERATED     maythrow = true;
1275   GENERATED  
1276 #               define OP1  VAROP(iptr->s1)
1277   GENERATED  
1278   GENERATED  
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");
1282   GENERATED  
1283 #               line 1284 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1284   GENERATED  
1285   GENERATED     break;
1286   GENERATED  
1287   GENERATED  
1288 #               undef OP1
1289   GENERATED  
1290   GENERATED  
1291   GENERATED  case ICMD_FASTORECONST:
1292   GENERATED  case ICMD_DASTORECONST:
1293   GENERATED  case ICMD_AASTORECONST:
1294   GENERATED     /* (AI--) */
1295   GENERATED     maythrow = true;
1296   GENERATED     break;
1297   GENERATED  
1298   GENERATED  
1299   GENERATED  case ICMD_BASTORECONST:
1300   GENERATED     /* (AI--) */
1301   GENERATED     maythrow = true;
1302   GENERATED  
1303 #               define OP1  VAROP(iptr->s1)
1304   GENERATED  
1305   GENERATED  
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");
1310   GENERATED  
1311 #               line 1312 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1312   GENERATED  
1313   GENERATED     break;
1314   GENERATED  
1315   GENERATED  
1316 #               undef OP1
1317   GENERATED  
1318   GENERATED  
1319   GENERATED  case ICMD_CASTORECONST:
1320   GENERATED     /* (AI--) */
1321   GENERATED     maythrow = true;
1322   GENERATED  
1323 #               define OP1  VAROP(iptr->s1)
1324   GENERATED  
1325   GENERATED  
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");
1329   GENERATED  
1330 #               line 1331 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1331   GENERATED  
1332   GENERATED     break;
1333   GENERATED  
1334   GENERATED  
1335 #               undef OP1
1336   GENERATED  
1337   GENERATED  
1338   GENERATED  case ICMD_SASTORECONST:
1339   GENERATED     /* (AI--) */
1340   GENERATED     maythrow = true;
1341   GENERATED  
1342 #               define OP1  VAROP(iptr->s1)
1343   GENERATED  
1344   GENERATED  
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");
1348   GENERATED  
1349 #               line 1350 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1350   GENERATED  
1351   GENERATED     break;
1352   GENERATED  
1353   GENERATED  
1354 #               undef OP1
1355   GENERATED  
1356   GENERATED  
1357   GENERATED  case ICMD_PUTSTATICCONST:
1358   GENERATED     /* (--) */
1359   GENERATED     maythrow = true;
1360   GENERATED  
1361   GENERATED  
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);
1373   GENERATED             }
1374   GENERATED             else {
1375   GENERATED                     TYPEINFO_INIT_NULLTYPE(constvalue.typeinfo);
1376   GENERATED             }
1377   GENERATED     }
1378   GENERATED     if (!handle_fieldaccess(state, NULL, &constvalue))
1379   GENERATED             return false;
1380   GENERATED     maythrow = true;
1381   GENERATED  
1382 #               line 1383 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1383   GENERATED  
1384   GENERATED     break;
1385   GENERATED  
1386   GENERATED  
1387   GENERATED  case ICMD_PUTFIELDCONST:
1388   GENERATED     /* (A--) */
1389   GENERATED     maythrow = true;
1390   GENERATED  
1391 #               define OP1  VAROP(iptr->s1)
1392   GENERATED  
1393   GENERATED  
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);
1405   GENERATED             }
1406   GENERATED             else {
1407   GENERATED                     TYPEINFO_INIT_NULLTYPE(constvalue.typeinfo);
1408   GENERATED             }
1409   GENERATED     }
1410   GENERATED     if (!handle_fieldaccess(state, VAROP(iptr->s1), &constvalue))
1411   GENERATED             return false;
1412   GENERATED     maythrow = true;
1413   GENERATED  
1414 #               line 1415 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1415   GENERATED  
1416   GENERATED     break;
1417   GENERATED  
1418   GENERATED  
1419 #               undef OP1
1420   GENERATED  
1421   GENERATED  
1422   GENERATED  case ICMD_BUILTIN:
1423   GENERATED     /* (.--1|.--2|.--) */
1424   GENERATED     maythrow = true;
1425   GENERATED  
1426 #               define OP1  VAROP(iptr->s1)
1427   GENERATED  
1428   GENERATED  
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;
1433   GENERATED  
1434 #               line 1435 "src/vm/jit/verify/typecheck-variablesbased-gen.inc"
1435   GENERATED  
1436   GENERATED     break;
1437   GENERATED  
1438   GENERATED  
1439 #               undef OP1
1440   GENERATED  
1441   GENERATED  
1442 #undef GENERATED
1443 /* vim:filetype=c:
1444  */