* src/vm/jit/stack.c (stack_analyse): Keep TYPE_RET for variables
authoredwin <none@none>
Sun, 19 Nov 2006 15:22:53 +0000 (15:22 +0000)
committeredwin <none@none>
Sun, 19 Nov 2006 15:22:53 +0000 (15:22 +0000)
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.

src/vm/jit/icmdtable.inc
src/vm/jit/stack.c
src/vm/jit/verify/icmds.c
src/vm/jit/verify/typecheck-stackbased-gen.inc
src/vm/jit/verify/typecheck-variablesbased-gen.inc
src/vm/jit/verify/typeinfo.h

index a2775353bb807a1380378e545e9c0dceb07c6361..f4929cc7be6bef8649b870425bbd17b90c49fc30 100644 (file)
 /* 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--)                */},
 /*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--)                */},
index a5c92e375524377b495d20aa5604f9cc28bb713c..e93b9f942e7d2eb55ab1525e1c664b2c20e02ee6 100644 (file)
@@ -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; i<sd.vartop; ++i) {
+       for (i=0; i<sd.localcount; ++i) {
                if (sd.var[i].type == TYPE_RET)
                        sd.var[i].type = TYPE_ADR;
        }
 
+       /* mark temporaries of TYPE_RET as PREALLOC to avoid allocation */
+
+       for (i=sd.localcount; i<sd.vartop; ++i) {
+               if (sd.var[i].type == TYPE_RET)
+                       sd.var[i].flags |= PREALLOC;
+       }
+
        /* XXX hack to fix up the ranges of the cloned single-block handlers */
 
        ex = jd->exceptiontable;
index 84e545615635e86214ce307f249042a4ad2ed961..798f0cd86dabb38c03191019545c8a0c4e6d51e5 100644 (file)
@@ -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");
 
index 9fc8ce88ca1fd9c3eacc28732d160735d291ade6..c1ceb426645de943b40dd25cb624ba7aa56cd637 100644 (file)
   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--) */
   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;
   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;
   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;
   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;
   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;
   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;
   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;
   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;
   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;
   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;
   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;
   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;
   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;
   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;
   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;
   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;
   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  
   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  
   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  
   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  
   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  
   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  
   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  
   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  
   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  
   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  
   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  
   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  
   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  
   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  
   GENERATED                    VERIFY_ERROR("<init> 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  
   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  
   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  
   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  
   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  
   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  
   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;
   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;
   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  
   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;
   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  
   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  
   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  
index 815f0f1bee7957c50a4331e51bc55a996ddcca88..94a1c6b4d92e06ab56835bc1b425d6075d0e388c 100644 (file)
   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  
   GENERATED  
   GENERATED  
   GENERATED  case ICMD_JSR:
-  GENERATED    /* (--A) */
+  GENERATED    /* (--R) */
   GENERATED    superblockend = true;
   GENERATED  
 #              define DST  VAROP(iptr->dst)
   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  
index 5663eef5e2f553251cec7f299d4d81d58028d4e5..4dffce704a6537c9b9898abc83e83cdec8f915ab 100644 (file)
@@ -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)                            \