From: edwin Date: Sun, 19 Nov 2006 15:22:53 +0000 (+0000) Subject: * src/vm/jit/stack.c (stack_analyse): Keep TYPE_RET for variables X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=3eb15e94b7c589e0396e5ecf43d9a4a74ea51440;p=cacao.git * src/vm/jit/stack.c (stack_analyse): Keep TYPE_RET for variables of returnAddress type. Do not create interfaces for this type. Mark block variables of TYPE_RET as PREALLOC to avoid subsequent allocation. * src/vm/jit/icmdtable.inc (ASTORE): Added TYPE_RET (R--) variant. (JSR): Changed destination type to TYPE_RET (R). * src/vm/jit/verify/icmds.c (ICMD_RET): Check local for type TYPE_RET. * src/vm/jit/verify/typeinfo.h (TYPE_IS_RETURNADDRESS): Check type for TYPE_RET. * src/vm/jit/verify/typecheck-stackbased-gen.inc: Regenerated. * src/vm/jit/verify/typecheck-variablesbased-gen.inc: Regenerated. --- diff --git a/src/vm/jit/icmdtable.inc b/src/vm/jit/icmdtable.inc index a2775353b..f4929cc7b 100644 --- a/src/vm/jit/icmdtable.inc +++ b/src/vm/jit/icmdtable.inc @@ -109,7 +109,7 @@ /* 55*/ {N("LSTORE ") DF_STORE , CF_NORMAL, 0 /* (L--) */}, /* 56*/ {N("FSTORE ") DF_STORE , CF_NORMAL, 0 /* (F--) */}, /* 57*/ {N("DSTORE ") DF_STORE , CF_NORMAL, 0 /* (D--) */}, -/* 58*/ {N("ASTORE ") DF_STORE , CF_NORMAL, 0 /* (A--) */}, +/* 58*/ {N("ASTORE ") DF_STORE , CF_NORMAL, 0 /* (A--|R--) */}, /* 59*/ {N("IF_LEQ ") DF_1_TO_0 , CF_IF , 0 /* S+ (L--) */}, /* 60*/ {N("IF_LNE ") DF_1_TO_0 , CF_IF , 0 /* S+ (L--) */}, /* 61*/ {N("IF_LLT ") DF_1_TO_0 , CF_IF , 0 /* S+ (L--) */}, @@ -219,7 +219,7 @@ /*165*/ {N("IF_ACMPEQ ") DF_2_TO_0 , CF_IF , 0 /* (AA--) */}, /*166*/ {N("IF_ACMPNE ") DF_2_TO_0 , CF_IF , 0 /* (AA--) */}, /*167*/ {N("GOTO ") DF_0_TO_0 , CF_GOTO , 0 /* (--) */}, -/*168*/ {N("JSR ") DF_0_TO_1 , CF_JSR , 0 /* (--A) */}, +/*168*/ {N("JSR ") DF_0_TO_1 , CF_JSR , 0 /* (--R) */}, /*169*/ {N("RET ") DF_0_TO_0 , CF_RET , 0 /* (--) */}, /*170*/ {N("TABLESWITCH ") DF_1_TO_0 , CF_TABLE , 0 /* (I--) */}, /*171*/ {N("LOOKUPSWITCH ") DF_1_TO_0 , CF_LOOKUP, 0 /* (I--) */}, diff --git a/src/vm/jit/stack.c b/src/vm/jit/stack.c index a5c92e375..e93b9f942 100644 --- a/src/vm/jit/stack.c +++ b/src/vm/jit/stack.c @@ -29,7 +29,7 @@ Christian Thalinger Christian Ullrich - $Id: stack.c 6020 2006-11-19 15:04:27Z edwin $ + $Id: stack.c 6023 2006-11-19 15:22:53Z edwin $ */ @@ -4633,19 +4633,21 @@ icmd_BUILTIN: SET_TEMPVAR(copy); t = copy->type; - if (t == TYPE_RET) - t = TYPE_ADR; v = sd.var + copy->varnum; v->flags |= INOUT; - if (jd->interface_map[i*5 + t].flags == UNUSED) { - /* no interface var until now for this depth and */ - /* type */ - jd->interface_map[i*5 + t].flags = v->flags; - } - else { - jd->interface_map[i*5 + t].flags |= v->flags; + /* do not allocate variables for returnAddresses */ + + if (t != TYPE_RET) { + if (jd->interface_map[i*5 + t].flags == UNUSED) { + /* no interface var until now for this depth and */ + /* type */ + jd->interface_map[i*5 + t].flags = v->flags; + } + else { + jd->interface_map[i*5 + t].flags |= v->flags; + } } sd.bptr->outvars[i] = copy->varnum; @@ -4658,16 +4660,16 @@ icmd_BUILTIN: s4 t; t = v->type; - if (t == TYPE_RET) - t = TYPE_ADR; - if (jd->interface_map[i*5 + t].flags == UNUSED) { - /* no interface var until now for this depth and */ - /* type */ - jd->interface_map[i*5 + t].flags = v->flags; - } - else { - jd->interface_map[i*5 + t].flags |= v->flags; + if (t != TYPE_RET) { + if (jd->interface_map[i*5 + t].flags == UNUSED) { + /* no interface var until now for this depth and */ + /* type */ + jd->interface_map[i*5 + t].flags = v->flags; + } + else { + jd->interface_map[i*5 + t].flags |= v->flags; + } } } @@ -4689,13 +4691,20 @@ icmd_BUILTIN: } while (sd.repeat && !deadcode); - /* XXX reset TYPE_RET to TYPE_ADR */ + /* reset locals of TYPE_RET to TYPE_ADR */ - for (i=0; iexceptiontable; diff --git a/src/vm/jit/verify/icmds.c b/src/vm/jit/verify/icmds.c index 84e545615..798f0cd86 100644 --- a/src/vm/jit/verify/icmds.c +++ b/src/vm/jit/verify/icmds.c @@ -558,7 +558,7 @@ case ICMD_RET: /* {VARIABLESBASED} */ case ICMD_RET: /* {STACKBASED} */ /* {RESULTNOW} */ - CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_ADR); + CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_RET); if (!TYPEINFO_IS_PRIMITIVE(STATE->locals[IPTR->s1.varindex].typeinfo)) VERIFY_ERROR("illegal instruction: RET using non-returnAddress variable"); diff --git a/src/vm/jit/verify/typecheck-stackbased-gen.inc b/src/vm/jit/verify/typecheck-stackbased-gen.inc index 9fc8ce88c..c1ceb4266 100644 --- a/src/vm/jit/verify/typecheck-stackbased-gen.inc +++ b/src/vm/jit/verify/typecheck-stackbased-gen.inc @@ -454,30 +454,29 @@ GENERATED GENERATED GENERATED case ICMD_ASTORE: - GENERATED /* (A--) */ + GENERATED /* (A--|R--) */ GENERATED CHECK_STACK_DEPTH(1); - GENERATED CHECK_STACK_TYPE(stack[0], TYPE_ADR); - GENERATED STORE_LOCAL(TYPE_ADR, IPTR->dst.varindex); - GENERATED -# define DST LOCAL_SLOT(IPTR->dst.varindex) GENERATED # define OP1 (&(stack[0])) + GENERATED STORE_LOCAL(OP1->type, IPTR->dst.varindex); + GENERATED +# define DST LOCAL_SLOT(IPTR->dst.varindex) GENERATED /* may use stack[0] ... stack[0] */ GENERATED GENERATED # line 70 "src/vm/jit/verify/icmds.c" GENERATED TYPEINFO_COPY(OP1->typeinfo, DST->typeinfo); GENERATED -# line 472 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 471 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -1; GENERATED break; GENERATED GENERATED -# undef DST - GENERATED # undef OP1 GENERATED +# undef DST + GENERATED GENERATED GENERATED case ICMD_IASTORE: GENERATED /* (AII--) */ @@ -499,7 +498,7 @@ GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_INT)) GENERATED VERIFY_ERROR("Array type mismatch"); GENERATED -# line 503 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 502 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -3; GENERATED break; @@ -532,7 +531,7 @@ GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_LONG)) GENERATED VERIFY_ERROR("Array type mismatch"); GENERATED -# line 536 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 535 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -4; GENERATED break; @@ -565,7 +564,7 @@ GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_FLOAT)) GENERATED VERIFY_ERROR("Array type mismatch"); GENERATED -# line 569 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 568 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -3; GENERATED break; @@ -598,7 +597,7 @@ GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_DOUBLE)) GENERATED VERIFY_ERROR("Array type mismatch"); GENERATED -# line 602 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 601 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -4; GENERATED break; @@ -635,7 +634,7 @@ GENERATED if (!TYPEINFO_MAYBE_ARRAY_OF_REFS(OP1->typeinfo)) GENERATED VERIFY_ERROR("illegal instruction: AASTORE to non-reference array"); GENERATED -# line 639 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 638 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -3; GENERATED break; @@ -669,7 +668,7 @@ GENERATED && !TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_BYTE)) GENERATED VERIFY_ERROR("Array type mismatch"); GENERATED -# line 673 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 672 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -3; GENERATED break; @@ -702,7 +701,7 @@ GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_CHAR)) GENERATED VERIFY_ERROR("Array type mismatch"); GENERATED -# line 706 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 705 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -3; GENERATED break; @@ -735,7 +734,7 @@ GENERATED if (!TYPEINFO_MAYBE_PRIMITIVE_ARRAY(OP1->typeinfo,ARRAYTYPE_SHORT)) GENERATED VERIFY_ERROR("Array type mismatch"); GENERATED -# line 739 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 738 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -3; GENERATED break; @@ -758,7 +757,7 @@ GENERATED /* we pop 1 */ GENERATED CHECK_CAT1(stack[0]); GENERATED -# line 762 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 761 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -1; GENERATED break; @@ -775,7 +774,7 @@ GENERATED if (IS_CAT1(stack[0])) GENERATED CHECK_CAT1(stack[-1]); GENERATED -# line 779 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 778 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -2; GENERATED break; @@ -796,7 +795,7 @@ GENERATED GENERATED COPY_SLOT(stack[ 0], stack[ 1]); GENERATED -# line 800 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 799 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += 1; GENERATED break; @@ -824,7 +823,7 @@ GENERATED COPY_SLOT(stack[-1], stack[ 0]); GENERATED COPY_SLOT(stack[ 1], stack[-1]); GENERATED -# line 828 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 827 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += 1; GENERATED break; @@ -852,7 +851,7 @@ GENERATED COPY_SLOT(stack[-2], stack[-1]); GENERATED COPY_SLOT(stack[ 1], stack[-2]); GENERATED -# line 856 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 855 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += 1; GENERATED break; @@ -873,7 +872,7 @@ GENERATED COPY_SLOT(stack[ 0], stack[ 2]); GENERATED COPY_SLOT(stack[-1], stack[ 1]); GENERATED -# line 877 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 876 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += 2; GENERATED break; @@ -899,7 +898,7 @@ GENERATED COPY_SLOT(stack[ 2], stack[-1]); GENERATED COPY_SLOT(stack[ 1], stack[-2]); GENERATED -# line 903 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 902 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += 2; GENERATED break; @@ -927,7 +926,7 @@ GENERATED COPY_SLOT(stack[ 2], stack[-2]); GENERATED COPY_SLOT(stack[ 1], stack[-3]); GENERATED -# line 931 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 930 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += 2; GENERATED break; @@ -949,7 +948,7 @@ GENERATED COPY_SLOT(stack[-1], stack[ 0]); GENERATED COPY_SLOT(temp , stack[-1]); GENERATED -# line 953 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 952 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1253,7 +1252,7 @@ GENERATED /* propagate stack and variables to the target block */ GENERATED REACH(IPTR->dst); GENERATED -# line 1257 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1256 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1287,7 +1286,7 @@ GENERATED /* propagate stack and variables to the target block */ GENERATED REACH(IPTR->dst); GENERATED -# line 1291 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1290 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1319,7 +1318,7 @@ GENERATED /* propagate stack and variables to the target block */ GENERATED REACH(IPTR->dst); GENERATED -# line 1323 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1322 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1341,17 +1340,17 @@ GENERATED /* propagate stack and variables to the target block */ GENERATED REACH(IPTR->dst); GENERATED -# line 1345 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1344 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED GENERATED GENERATED case ICMD_JSR: - GENERATED /* (--A) */ + GENERATED /* (--R) */ GENERATED superblockend = true; GENERATED CHECK_STACK_SPACE(1); GENERATED stack += 1; - GENERATED stack[0].type = TYPE_ADR; + GENERATED stack[0].type = TYPE_RET; GENERATED /* CAUTION: stack types changed before custom code! */ GENERATED /* CAUTION: stack pointer changed before custom code! */ GENERATED @@ -1370,7 +1369,7 @@ GENERATED if (stack == NULL) GENERATED EXCEPTION; GENERATED -# line 1374 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1373 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1385,14 +1384,14 @@ GENERATED # line 560 "src/vm/jit/verify/icmds.c" GENERATED /* {RESULTNOW} */ - GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_ADR); + GENERATED CHECK_LOCAL_TYPE(IPTR->s1.varindex, TYPE_RET); GENERATED if (!TYPEINFO_IS_PRIMITIVE(STATE->locals[IPTR->s1.varindex].typeinfo)) GENERATED VERIFY_ERROR("illegal instruction: RET using non-returnAddress variable"); GENERATED GENERATED if (!typecheck_stackbased_ret(STATE, stack, stackfloor)) GENERATED EXCEPTION; GENERATED -# line 1396 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1395 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1424,7 +1423,7 @@ GENERATED GENERATED LOG("switch done"); GENERATED -# line 1428 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1427 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1459,7 +1458,7 @@ GENERATED GENERATED LOG("switch done"); GENERATED -# line 1463 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1462 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1481,7 +1480,7 @@ GENERATED if (STATE->returntype.type != TYPE_INT) GENERATED VERIFY_ERROR("Return type mismatch"); GENERATED -# line 1485 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1484 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED goto return_tail; GENERATED @@ -1503,7 +1502,7 @@ GENERATED if (STATE->returntype.type != TYPE_LNG) GENERATED VERIFY_ERROR("Return type mismatch"); GENERATED -# line 1507 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1506 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED goto return_tail; GENERATED @@ -1525,7 +1524,7 @@ GENERATED if (STATE->returntype.type != TYPE_FLT) GENERATED VERIFY_ERROR("Return type mismatch"); GENERATED -# line 1529 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1528 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED goto return_tail; GENERATED @@ -1547,7 +1546,7 @@ GENERATED if (STATE->returntype.type != TYPE_DBL) GENERATED VERIFY_ERROR("Return type mismatch"); GENERATED -# line 1551 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1550 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED goto return_tail; GENERATED @@ -1587,7 +1586,7 @@ GENERATED IPTR->flags.bits |= INS_FLAG_UNRESOLVED; GENERATED } GENERATED -# line 1591 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1590 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED goto return_tail; GENERATED @@ -1621,7 +1620,7 @@ GENERATED VERIFY_ERROR(" method does not initialize 'this'"); GENERATED } GENERATED -# line 1625 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1624 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1637,7 +1636,7 @@ GENERATED if (stack == NULL) GENERATED EXCEPTION; GENERATED -# line 1641 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1640 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1658,7 +1657,7 @@ GENERATED if (stack == NULL) GENERATED EXCEPTION; GENERATED -# line 1662 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1661 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1676,7 +1675,7 @@ GENERATED if (stack == NULL) GENERATED EXCEPTION; GENERATED -# line 1680 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1679 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1698,7 +1697,7 @@ GENERATED if (stack == NULL) GENERATED EXCEPTION; GENERATED -# line 1702 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1701 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1739,7 +1738,7 @@ GENERATED } GENERATED TYPECHECK_COUNTIF(INSTRUCTION_IS_UNRESOLVED(IPTR), stat_ins_invoke_unresolved); GENERATED -# line 1743 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1742 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1761,7 +1760,7 @@ GENERATED && OP1->typeinfo.typeclass.cls != pseudo_class_Arraystub) GENERATED VERIFY_ERROR("illegal instruction: ARRAYLENGTH on non-array"); GENERATED -# line 1765 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1764 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack[0].type = TYPE_INT; GENERATED break; @@ -1803,7 +1802,7 @@ GENERATED IPTR->flags.bits |= INS_FLAG_UNRESOLVED; GENERATED } GENERATED -# line 1807 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1806 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack += -1; GENERATED break; @@ -1832,7 +1831,7 @@ GENERATED if (!typeinfo_init_class(&(DST->typeinfo),IPTR->sx.s23.s3.c)) GENERATED EXCEPTION; GENERATED -# line 1836 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1835 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1859,7 +1858,7 @@ GENERATED if (!TYPEINFO_IS_REFERENCE(OP1->typeinfo)) GENERATED VERIFY_ERROR("Illegal instruction: INSTANCEOF on non-reference"); GENERATED -# line 1863 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1862 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED stack[0].type = TYPE_INT; GENERATED break; @@ -1882,7 +1881,7 @@ GENERATED stack -= (IPTR->s1.argcount - 1); GENERATED stack[0].type = TYPE_ADR; GENERATED -# line 1886 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1885 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1906,7 +1905,7 @@ GENERATED /* propagate stack and variables to the target block */ GENERATED REACH(IPTR->dst); GENERATED -# line 1910 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1909 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED @@ -1938,7 +1937,7 @@ GENERATED } GENERATED } GENERATED -# line 1942 "src/vm/jit/verify/typecheck-stackbased-gen.inc" +# line 1941 "src/vm/jit/verify/typecheck-stackbased-gen.inc" GENERATED GENERATED break; GENERATED diff --git a/src/vm/jit/verify/typecheck-variablesbased-gen.inc b/src/vm/jit/verify/typecheck-variablesbased-gen.inc index 815f0f1be..94a1c6b4d 100644 --- a/src/vm/jit/verify/typecheck-variablesbased-gen.inc +++ b/src/vm/jit/verify/typecheck-variablesbased-gen.inc @@ -469,8 +469,8 @@ GENERATED GENERATED GENERATED case ICMD_ASTORE: - GENERATED /* (A--) */ - GENERATED STORE_LOCAL(TYPE_ADR, IPTR->dst.varindex); + GENERATED /* (A--|R--) */ + GENERATED STORE_LOCAL(VAROP(iptr->s1)->type, IPTR->dst.varindex); GENERATED # define DST VAROP(IPTR->dst) GENERATED @@ -745,7 +745,7 @@ GENERATED GENERATED GENERATED case ICMD_JSR: - GENERATED /* (--A) */ + GENERATED /* (--R) */ GENERATED superblockend = true; GENERATED # define DST VAROP(iptr->dst) @@ -757,7 +757,7 @@ GENERATED # line 759 "src/vm/jit/verify/typecheck-variablesbased-gen.inc" GENERATED - GENERATED VAROP(iptr->dst)->type = TYPE_ADR; + GENERATED VAROP(iptr->dst)->type = TYPE_RET; GENERATED break; GENERATED GENERATED diff --git a/src/vm/jit/verify/typeinfo.h b/src/vm/jit/verify/typeinfo.h index 5663eef5e..4dffce704 100644 --- a/src/vm/jit/verify/typeinfo.h +++ b/src/vm/jit/verify/typeinfo.h @@ -26,7 +26,7 @@ Authors: Edwin Steiner - $Id: typeinfo.h 5601 2006-10-01 14:37:17Z edwin $ + $Id: typeinfo.h 6023 2006-11-19 15:22:53Z edwin $ */ @@ -353,7 +353,7 @@ struct typedescriptor { && TYPEINFO_IS_ARRAY_OF_REFS_NOCHECK(info) ) #define TYPE_IS_RETURNADDRESS(type,info) \ - ( ((type)==TYPE_ADR) \ + ( ((type)==TYPE_RET) \ && TYPEINFO_IS_PRIMITIVE(info) ) #define TYPE_IS_REFERENCE(type,info) \