* src/vm/vm.c (vm_array_store_int, vm_array_store_adr, vm_array_store_lng,
authormichi <none@none>
Wed, 20 Jun 2007 19:14:05 +0000 (19:14 +0000)
committermichi <none@none>
Wed, 20 Jun 2007 19:14:05 +0000 (19:14 +0000)
vm_array_store_flt, vm_array_store_dbl): Uses pd->index for inmemory arguments.

* src/vm/jit/allocator/simplereg.c: The regoff value is a real offset
(multiplied by the stackslot size) for inmemory variables now.

* src/vm/jit/arm/md-abi.c (md_param_alloc): Set pd->regoff as described above.
* src/vm/jit/arm/emit.c: Adapted to above changes.
* src/vm/jit/arm/codegen.c: Adapted to above changes.

* src/vm/jit/powerpc/linux/md-abi.c,
* src/vm/jit/powerpc/netbsd/md-abi.c,
* src/vm/jit/powerpc/emit.c,
* src/vm/jit/powerpc/darwin/md-abi.c,
* src/vm/jit/powerpc/codegen.c,
* src/vm/jit/sparc64/emit.c,
* src/vm/jit/sparc64/md-abi.h,
* src/vm/jit/sparc64/codegen.c,
* src/vm/jit/sparc64/md-abi.c,
* src/vm/jit/alpha/emit.c,
* src/vm/jit/alpha/codegen.c,
* src/vm/jit/alpha/md-abi.c,
* src/vm/jit/s390/emit.c,
* src/vm/jit/s390/codegen.c,
* src/vm/jit/s390/md-abi.c,
* src/vm/jit/mips/emit.c,
* src/vm/jit/mips/codegen.c,
* src/vm/jit/mips/md-abi.c,
* src/vm/jit/m68k/emit.c,
* src/vm/jit/m68k/linux/md-abi.c,
* src/vm/jit/m68k/codegen.c,
* src/vm/jit/powerpc64/linux/md-abi.c,
* src/vm/jit/powerpc64/emit.c,
* src/vm/jit/powerpc64/codegen.c,
* src/vm/jit/i386/emit.c,
* src/vm/jit/i386/codegen.c,
* src/vm/jit/i386/md-abi.c,
* src/vm/jit/x86_64/emit.c,
* src/vm/jit/x86_64/codegen.c,
* src/vm/jit/x86_64/md-abi.c: Likewise.

35 files changed:
src/vm/jit/allocator/simplereg.c
src/vm/jit/alpha/codegen.c
src/vm/jit/alpha/emit.c
src/vm/jit/alpha/md-abi.c
src/vm/jit/arm/codegen.c
src/vm/jit/arm/emit.c
src/vm/jit/arm/md-abi.c
src/vm/jit/i386/codegen.c
src/vm/jit/i386/emit.c
src/vm/jit/i386/md-abi.c
src/vm/jit/m68k/codegen.c
src/vm/jit/m68k/emit.c
src/vm/jit/m68k/linux/md-abi.c
src/vm/jit/mips/codegen.c
src/vm/jit/mips/emit.c
src/vm/jit/mips/md-abi.c
src/vm/jit/powerpc/codegen.c
src/vm/jit/powerpc/darwin/md-abi.c
src/vm/jit/powerpc/emit.c
src/vm/jit/powerpc/linux/md-abi.c
src/vm/jit/powerpc/netbsd/md-abi.c
src/vm/jit/powerpc64/codegen.c
src/vm/jit/powerpc64/emit.c
src/vm/jit/powerpc64/linux/md-abi.c
src/vm/jit/s390/codegen.c
src/vm/jit/s390/emit.c
src/vm/jit/s390/md-abi.c
src/vm/jit/sparc64/codegen.c
src/vm/jit/sparc64/emit.c
src/vm/jit/sparc64/md-abi.c
src/vm/jit/sparc64/md-abi.h
src/vm/jit/x86_64/codegen.c
src/vm/jit/x86_64/emit.c
src/vm/jit/x86_64/md-abi.c
src/vm/vm.c

index cb7d743f473829af359d6d1bc2d8d3e28f866f9d..978fc706b441b808a73b89b2054b416ca7dd7f4b 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
    02111-1307, USA.
 
-   $Id: simplereg.c 7766 2007-04-19 13:24:48Z michi $
+   $Id: simplereg.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -66,6 +66,15 @@ static void simplereg_allocate_locals(jitdata *jd);
 static void simplereg_allocate_temporaries(jitdata *jd);
 
 
+/* size of a stackslot used by the internal ABI */
+
+#if defined(HAS_4BYTE_STACKSLOT)
+# define SIZE_OF_STACKSLOT 4
+#else 
+# define SIZE_OF_STACKSLOT 8
+#endif
+
+
 /* total number of registers */
 
 #if defined(HAS_ADDRESS_REGISTER_FILE)
@@ -201,7 +210,7 @@ static void simplereg_allocate_temporaries(jitdata *jd);
 
 #define NEW_MEM_SLOT(r)                                              \
     do {                                                             \
-        (r) = rd->memuse;                                            \
+        (r) = rd->memuse * SIZE_OF_STACKSLOT;                        \
         rd->memuse += memneeded + 1;                                 \
     } while (0)
 
@@ -209,7 +218,7 @@ static void simplereg_allocate_temporaries(jitdata *jd);
     do {                                                             \
         if ( (memneeded) && (rd->memuse & 1))                        \
             rd->memuse++;                                            \
-        (r) = rd->memuse;                                            \
+        (r) = rd->memuse * SIZE_OF_STACKSLOT;                        \
         rd->memuse += memneeded + 1;                                 \
     } while (0)
 
@@ -219,7 +228,7 @@ static void simplereg_allocate_temporaries(jitdata *jd);
                        PUSH_BACK(rd->freemem, rd->freememtop, rd->memuse);      \
             rd->memuse++;                                            \
                }                                                            \
-        (r) = rd->memuse;                                            \
+        (r) = rd->memuse * SIZE_OF_STACKSLOT;                        \
         rd->memuse += memneeded + 1;                                 \
     } while (0)
 
@@ -401,7 +410,7 @@ static void simplereg_allocate_interfaces(jitdata *jd)
                                        } 
                                        else {
                                                flags |= INMEMORY;
-                                               regoff = rd->memuse++;
+                                               regoff = rd->memuse++ * SIZE_OF_STACKSLOT;
                                        }                                               
                                } 
                                else /* !IS_ADR_TYPE */
@@ -483,7 +492,7 @@ static void simplereg_allocate_interfaces(jitdata *jd)
                                        }
                                        else {
                                                flags |= INMEMORY;
-                                               regoff = rd->memuse++;
+                                               regoff = rd->memuse++ * SIZE_OF_STACKSLOT;
                                        }                                               
                                } 
                                else
@@ -645,7 +654,7 @@ static void simplereg_allocate_locals_leafmethod(jitdata *jd)
                                }
                                else {
                                        v->flags |= INMEMORY;
-                                       v->vv.regoff = rd->memuse++;
+                                       v->vv.regoff = rd->memuse++ * SIZE_OF_STACKSLOT;
                                }                                               
                        } 
                        else {
@@ -816,7 +825,7 @@ static void simplereg_allocate_locals(jitdata *jd)
                                        }
                                        else {
                                                v->flags = INMEMORY;
-                                               v->vv.regoff = rd->memuse++;
+                                               v->vv.regoff = rd->memuse++ * SIZE_OF_STACKSLOT;
                                        }
                                } 
                                else {
@@ -1167,12 +1176,12 @@ static void simplereg_free(registerdata *rd, s4 flags, s4 regoff, s4 type)
 
        /* if this is a copy of another variable, just decrement the copy counter */
 
-       /* XXX split reg/mem variables on arm may need special handling here */
-
        if (flags & INMEMORY) {
                if (flags & INOUT)
                        return;
 
+               #warning this will be more efficient if we divide it by SIZE_OF_STACKSLOT
+
                if (regoff < rd->memcopycountsize && rd->memcopycount[regoff]) {
                        rd->memcopycount[regoff]--;
                        return;
index fc77d2b44efd31339eb8f1801f431699ee8cd5f2..3ed747634f78c0e089263fda217368ce97c252bd 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 7886 2007-05-07 21:34:01Z twisti $
+   $Id: codegen.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -215,13 +215,13 @@ bool codegen_emit(jitdata *jd)
                                if (!IS_INMEMORY(var->flags))
                                        M_INTMOVE(s1, var->vv.regoff);
                                else
-                                       M_LST(s1, REG_SP, var->vv.regoff * 8);
+                                       M_LST(s1, REG_SP, var->vv.regoff);
                        }
                        else {                                   /* stack arguments       */
                                if (!IS_INMEMORY(var->flags))
-                                       M_LLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) *8);
+                                       M_LLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1);
                                else
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 8 + s1;
                        }
                }
                else {                                       /* floating args         */
@@ -233,9 +233,9 @@ bool codegen_emit(jitdata *jd)
                        }
                        else {                                   /* stack arguments       */
                                if (!(var->flags & INMEMORY))
-                                       M_DLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8);
+                                       M_DLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1);
                                else
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 8 + s1;
                        }
                }
        }
@@ -2583,7 +2583,7 @@ gen_method:
                                        }
                                        else {
                                                s1 = emit_load(jd, iptr, var, REG_ITMP1);
-                                               M_LST(s1, REG_SP, d * 8);
+                                               M_LST(s1, REG_SP, d);
                                        }
                                }
                                else {
@@ -2593,7 +2593,7 @@ gen_method:
                                        }
                                        else {
                                                s1 = emit_load(jd, iptr, var, REG_FTMP1);
-                                               M_DST(s1, REG_SP, d * 8);
+                                               M_DST(s1, REG_SP, d);
                                        }
                                }
                        }
@@ -3235,13 +3235,13 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                if (!nmd->params[j].inmemory)
                                        M_INTMOVE(s1, s2);
                                else
-                                       M_LST(s1, REG_SP, s2 * 8);
+                                       M_LST(s1, REG_SP, s2);
                        }
                        else {
-                               s1 = md->params[i].regoff + cd->stackframesize;
+                               s1 = md->params[i].regoff + cd->stackframesize * 8;
                                s2 = nmd->params[j].regoff;
-                               M_LLD(REG_ITMP1, REG_SP, s1 * 8);
-                               M_LST(REG_ITMP1, REG_SP, s2 * 8);
+                               M_LLD(REG_ITMP1, REG_SP, s1);
+                               M_LST(REG_ITMP1, REG_SP, s2);
                        }
                }
                else {
@@ -3253,19 +3253,19 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                        M_FLTMOVE(s1, s2);
                                else {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DST(s1, REG_SP, s2 * 8);
+                                               M_DST(s1, REG_SP, s2);
                                        else
-                                               M_FST(s1, REG_SP, s2 * 8);
+                                               M_FST(s1, REG_SP, s2);
                                }
                        }
                        else {
-                               s1 = md->params[i].regoff + cd->stackframesize;
+                               s1 = md->params[i].regoff + cd->stackframesize * 8;
                                s2 = nmd->params[j].regoff;
-                               M_DLD(REG_FTMP1, REG_SP, s1 * 8);
+                               M_DLD(REG_FTMP1, REG_SP, s1);
                                if (IS_2_WORD_TYPE(t))
-                                       M_DST(REG_FTMP1, REG_SP, s2 * 8);
+                                       M_DST(REG_FTMP1, REG_SP, s2);
                                else
-                                       M_FST(REG_FTMP1, REG_SP, s2 * 8);
+                                       M_FST(REG_FTMP1, REG_SP, s2);
                        }
                }
        }
index a7eeab0800806c16bbd2b8ad0159839a6e64cd2b..e25aa9db39c2fa42055ed82ae1338a6b5902f9a8 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: emit.c 7821 2007-04-25 19:56:30Z twisti $
+   $Id: emit.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -73,7 +73,7 @@ s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 8;
+               disp = src->vv.regoff;
 
                switch (src->type) {
                case TYPE_INT:
@@ -116,7 +116,7 @@ void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
        if (IS_INMEMORY(dst->flags)) {
                COUNT_SPILLS;
 
-               disp = dst->vv.regoff * 8;
+               disp = dst->vv.regoff;
 
                switch (dst->type) {
                case TYPE_INT:
index 94d982e313b26a90bcf849342604d33605a614dd..998bc281a99f068ba8a6ae4d97194fc92953a0bf 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md-abi.c 7713 2007-04-15 21:49:48Z twisti $
+   $Id: md-abi.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -180,7 +180,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 8;
                                stacksize++;
                        }
                        break;
@@ -195,7 +195,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 8;
                                stacksize++;
                        }
                        break;
index 6ab8eaa8b9faf2c89e61e758e1a756e5a3fa1cd8..4cf638db9a558c3074decb35207eb2f9705927b9 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 7934 2007-05-22 10:07:21Z michi $
+   $Id: codegen.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -225,21 +225,21 @@ bool codegen_emit(jitdata *jd)
                                }
                                else {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LST(s1, REG_SP, var->vv.regoff * 4);
+                                               M_LST(s1, REG_SP, var->vv.regoff);
                                        else
-                                               M_IST(s1, REG_SP, var->vv.regoff * 4);
+                                               M_IST(s1, REG_SP, var->vv.regoff);
                                }
                        }
                        else {                                   /* stack arguments       */
                                if (!(var->flags & INMEMORY)) {      /* stack arg -> register */
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_LLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
                                        else
-                                               M_ILD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_ILD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
                                }
                                else {                               /* stack arg -> spilled  */
                                        /* Reuse Memory Position on Caller Stack */
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 4 + s1;
                                }
                        }
 #if !defined(ENABLE_SOFTFLOAT)
@@ -251,21 +251,21 @@ bool codegen_emit(jitdata *jd)
                                }
                                else {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LST(s1, REG_SP, var->vv.regoff * 4);
+                                               M_LST(s1, REG_SP, var->vv.regoff);
                                        else
-                                               M_IST(s1, REG_SP, var->vv.regoff * 4);
+                                               M_IST(s1, REG_SP, var->vv.regoff);
                                }
                        }
                        else {
                                if (!(var->flags & INMEMORY)) {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_DLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
                                        else
-                                               M_FLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_FLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
                                }
                                else {
                                        /* Reuse Memory Position on Caller Stack */
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 4 + s1;
                                }
                        }
                }
@@ -2228,11 +2228,11 @@ bool codegen_emit(jitdata *jd)
                                        else {
                                                if (IS_2_WORD_TYPE(var->type)) {
                                                        s1 = emit_load(jd, iptr, var, REG_ITMP12_PACKED);
-                                                       M_LST(s1, REG_SP, d * 4);
+                                                       M_LST(s1, REG_SP, d);
                                                }
                                                else {
                                                        s1 = emit_load(jd, iptr, var, REG_ITMP1);
-                                                       M_IST(s1, REG_SP, d * 4);
+                                                       M_IST(s1, REG_SP, d);
                                                }
                                        }
 #if !defined(ENABLE_SOFTFLOAT)
@@ -2245,9 +2245,9 @@ bool codegen_emit(jitdata *jd)
                                        else {
                                                s1 = emit_load(jd, iptr, var, REG_FTMP1);
                                                if (IS_2_WORD_TYPE(var->type))
-                                                       M_DST(s1, REG_SP, d * 4);
+                                                       M_DST(s1, REG_SP, d);
                                                else
-                                                       M_FST(s1, REG_SP, d * 4);
+                                                       M_FST(s1, REG_SP, d);
                                        }
                                }
 #endif /* !defined(ENABLE_SOFTFLOAT) */
@@ -3022,22 +3022,22 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                        }
                        else {
                                if (IS_2_WORD_TYPE(t))
-                                       M_LST(s1, REG_SP, s2 * 4);
+                                       M_LST(s1, REG_SP, s2);
                                else
-                                       M_IST(s1, REG_SP, s2 * 4);
+                                       M_IST(s1, REG_SP, s2);
                        }
                }
                else {
-                       s1 = md->params[i].regoff + cd->stackframesize;
+                       s1 = md->params[i].regoff + cd->stackframesize * 4;
                        s2 = nmd->params[j].regoff;
 
                        if (IS_2_WORD_TYPE(t)) {
-                               M_LLD(REG_ITMP12_PACKED, REG_SP, s1 * 4);
-                               M_LST(REG_ITMP12_PACKED, REG_SP, s2 * 4);
+                               M_LLD(REG_ITMP12_PACKED, REG_SP, s1);
+                               M_LST(REG_ITMP12_PACKED, REG_SP, s2);
                        }
                        else {
-                               M_ILD(REG_ITMP1, REG_SP, s1 * 4);
-                               M_IST(REG_ITMP1, REG_SP, s2 * 4);
+                               M_ILD(REG_ITMP1, REG_SP, s1);
+                               M_IST(REG_ITMP1, REG_SP, s2);
                        }
                }
        }
index 10f80399ff23cbcafb8be7d27f75d4759e75cfb4..f6aca23f9151b7be0b30eea20b85adfd7fae93b5 100644 (file)
@@ -73,7 +73,7 @@ s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (src->flags & INMEMORY) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
 #if defined(ENABLE_SOFTFLOAT)
                switch (src->type) {
@@ -139,7 +139,7 @@ s4 emit_load_low(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (src->flags & INMEMORY) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
 #if defined(__ARMEL__)
                M_ILD(tempreg, REG_SP, disp);
@@ -177,7 +177,7 @@ s4 emit_load_high(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (src->flags & INMEMORY) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
 #if defined(__ARMEL__)
                M_ILD(tempreg, REG_SP, disp + 4);
@@ -212,7 +212,7 @@ void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
        if (dst->flags & INMEMORY) {
                COUNT_SPILLS;
 
-               disp = dst->vv.regoff * 4;
+               disp = dst->vv.regoff;
 
 #if defined(ENABLE_SOFTFLOAT)
                switch (dst->type) {
@@ -773,12 +773,12 @@ void emit_verbosecall_enter(jitdata *jd)
                }
                else {
                        s1 = REG_ITMP12_PACKED;
-                       s2 = md->params[i].regoff + stackframesize;
+                       s2 = md->params[i].regoff + stackframesize * 4;
 
                        if (IS_2_WORD_TYPE(t))
-                               M_LLD(s1, REG_SP, s2 * 4);
+                               M_LLD(s1, REG_SP, s2);
                        else {
-                               M_ILD(GET_LOW_REG(s1), REG_SP, s2 * 4);
+                               M_ILD(GET_LOW_REG(s1), REG_SP, s2);
                                M_MOV_IMM(GET_HIGH_REG(s1), 0);
                        }
                }
index ed6eee2a6af7ac1fe8cc7de81ebe031757dabb54..edf480ec83931636062ad2e7ef86a48ff5fa4e2a 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md-abi.c 7932 2007-05-22 07:00:57Z michi $
+   $Id: md-abi.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -155,7 +155,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 4;
                                stacksize++;
                        }
                        break;
@@ -184,7 +184,7 @@ void md_param_alloc(methoddesc *md)
                                ALIGN_2(stacksize);
 
                                pd->inmemory  = true;
-                               pd->regoff    = stacksize;
+                               pd->regoff    = stacksize * 4;
                                stacksize    += 2;
                        }
                        break;
@@ -247,7 +247,7 @@ void md_param_alloc_native(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 4;
                                stacksize++;
                        }
                        break;
@@ -291,7 +291,7 @@ void md_param_alloc_native(methoddesc *md)
                                ALIGN_2(stacksize);
 #endif
                                pd->inmemory  = true;
-                               pd->regoff    = stacksize;
+                               pd->regoff    = stacksize * 4;
                                reguse        = INT_ARG_CNT;
                                stacksize    += 2;
                        }
index e3fab11a184bf40d5bb434ccd3680f6de794c678..5b34271078139315c3f0446d6d7b8be0c295a000 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 7908 2007-05-15 09:55:17Z christian $
+   $Id: codegen.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -264,7 +264,7 @@ bool codegen_emit(jitdata *jd)
                        else {                                   /* stack arguments       */
                                if (!(var->flags & INMEMORY)) {      /* stack arg -> register */
                                        emit_mov_membase_reg(           /* + 4 for return address */
-                                          cd, REG_SP, (cd->stackframesize + s1) * 4 + 4, var->vv.regoff);
+                                          cd, REG_SP, cd->stackframesize * 4 + s1 + 4, var->vv.regoff);
                                                                        /* + 4 for return address */
                                } 
                                else {                               /* stack arg -> spilled  */
@@ -273,15 +273,15 @@ bool codegen_emit(jitdata *jd)
                                                /* no copy avoiding by now possible with SSA */
                                                if (ls != NULL) {
                                                        emit_mov_membase_reg(   /* + 4 for return address */
-                                                                cd, REG_SP, (cd->stackframesize + s1) * 4 + 4,
+                                                                cd, REG_SP, cd->stackframesize * 4 + s1 + 4,
                                                                 REG_ITMP1);    
                                                        emit_mov_reg_membase(
-                                                                cd, REG_ITMP1, REG_SP, var->vv.regoff * 4);
+                                                                cd, REG_ITMP1, REG_SP, var->vv.regoff);
                                                }
                                                else 
 #endif /*defined(ENABLE_SSA)*/
                                                                  /* reuse Stackslotand avoid copying */
-                                                       var->vv.regoff = cd->stackframesize + s1 + 1;
+                                                       var->vv.regoff = cd->stackframesize * 4 + s1 + 4;
 
                                        } 
                                        else {
@@ -289,20 +289,20 @@ bool codegen_emit(jitdata *jd)
                                                /* no copy avoiding by now possible with SSA */
                                                if (ls != NULL) {
                                                        emit_mov_membase_reg(  /* + 4 for return address */
-                                                                cd, REG_SP, (cd->stackframesize + s1) * 4 + 4,
+                                                                cd, REG_SP, cd->stackframesize * 4 + s1 + 4,
                                                                 REG_ITMP1);
                                                        emit_mov_reg_membase(
-                                                                cd, REG_ITMP1, REG_SP, var->vv.regoff * 4);
+                                                                cd, REG_ITMP1, REG_SP, var->vv.regoff);
                                                        emit_mov_membase_reg(   /* + 4 for return address */
-                                                                 cd, REG_SP, (cd->stackframesize + s1) * 4 + 4 + 4,
+                                                                 cd, REG_SP, cd->stackframesize * 4 + s1 + 4 + 4,
                                                                  REG_ITMP1);             
                                                        emit_mov_reg_membase(
-                                                                cd, REG_ITMP1, REG_SP, var->vv.regoff * 4 + 4);
+                                                                cd, REG_ITMP1, REG_SP, var->vv.regoff + 4);
                                                }
                                                else
 #endif /*defined(ENABLE_SSA)*/
                                                                  /* reuse Stackslotand avoid copying */
-                                                       var->vv.regoff = cd->stackframesize + s1 + 1;
+                                                       var->vv.regoff = cd->stackframesize * 4 + s1 + 4;
                                        }
                                }
                        }
@@ -322,14 +322,14 @@ bool codegen_emit(jitdata *jd)
                                if (!(var->flags & INMEMORY)) {      /* stack-arg -> register */
                                        if (t == TYPE_FLT) {
                                                emit_flds_membase(
-                            cd, REG_SP, (cd->stackframesize + s1) * 4 + 4);
+                            cd, REG_SP, cd->stackframesize * 4 + s1 + 4);
                                                assert(0);
 /*                                             emit_fstp_reg(cd, var->vv.regoff + fpu_st_offset); */
 
                                        } 
                                        else {
                                                emit_fldl_membase(
-                            cd, REG_SP, (cd->stackframesize + s1) * 4 + 4);
+                            cd, REG_SP, cd->stackframesize * 4 + s1 + 4);
                                                assert(0);
 /*                                             emit_fstp_reg(cd, var->vv.regoff + fpu_st_offset); */
                                        }
@@ -339,24 +339,24 @@ bool codegen_emit(jitdata *jd)
                                        /* no copy avoiding by now possible with SSA */
                                        if (ls != NULL) {
                                                emit_mov_membase_reg(
-                                                cd, REG_SP, (cd->stackframesize + s1) * 4 + 4, REG_ITMP1);
+                                                cd, REG_SP, cd->stackframesize * 4 + s1 + 4, REG_ITMP1);
                                                emit_mov_reg_membase(
-                                                                        cd, REG_ITMP1, REG_SP, var->vv.regoff * 4);
+                                                                        cd, REG_ITMP1, REG_SP, var->vv.regoff);
                                                if (t == TYPE_FLT) {
                                                        emit_flds_membase(
-                                                                 cd, REG_SP, (cd->stackframesize + s1) * 4 + 4);
-                                                       emit_fstps_membase(cd, REG_SP, var->vv.regoff * 4);
+                                                                 cd, REG_SP, cd->stackframesize * 4 + s1 + 4);
+                                                       emit_fstps_membase(cd, REG_SP, var->vv.regoff);
                                                } 
                                                else {
                                                        emit_fldl_membase(
-                                                                 cd, REG_SP, (cd->stackframesize + s1) * 4 + 4);
-                                                       emit_fstpl_membase(cd, REG_SP, var->vv.regoff * 4);
+                                                                 cd, REG_SP, cd->stackframesize * 4 + s1 + 4);
+                                                       emit_fstpl_membase(cd, REG_SP, var->vv.regoff);
                                                }
                                        }
                                        else
 #endif /*defined(ENABLE_SSA)*/
                                                                  /* reuse Stackslotand avoid copying */
-                                               var->vv.regoff = cd->stackframesize + s1 + 1;
+                                               var->vv.regoff = cd->stackframesize * 4 + s1 + 4;
                                }
                        }
                }
@@ -1572,7 +1572,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
 
                        if (var->flags & INMEMORY) {
-                               emit_fildl_membase(cd, REG_SP, var->vv.regoff * 4);
+                               emit_fildl_membase(cd, REG_SP, var->vv.regoff);
                        } else {
                                /* XXX not thread safe! */
                                disp = dseg_add_unique_s4(cd, 0);
@@ -1591,7 +1591,7 @@ bool codegen_emit(jitdata *jd)
                        var = VAROP(iptr->s1);
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
                        if (var->flags & INMEMORY) {
-                               emit_fildll_membase(cd, REG_SP, var->vv.regoff * 4);
+                               emit_fildll_membase(cd, REG_SP, var->vv.regoff);
 
                        } else {
                                log_text("L2F: longs have to be in memory");
@@ -1616,19 +1616,19 @@ bool codegen_emit(jitdata *jd)
                        var1 = VAROP(iptr->s1);
 
                        if (var->flags & INMEMORY) {
-                               emit_fistpl_membase(cd, REG_SP, var->vv.regoff * 4);
+                               emit_fistpl_membase(cd, REG_SP, var->vv.regoff);
 
                                /* Round to nearest, 53-bit mode, exceptions masked */
                                disp = dseg_add_s4(cd, 0x027f);
                                emit_fldcw_membase(cd, REG_ITMP1, disp);
 
                                emit_alu_imm_membase(cd, ALU_CMP, 0x80000000, 
-                                                                        REG_SP, var->vv.regoff * 4);
+                                                                        REG_SP, var->vv.regoff);
 
                                disp = 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff);
                                disp += 5 + 2 + 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff);
 
                        } else {
                                /* XXX not thread safe! */
@@ -1643,19 +1643,19 @@ bool codegen_emit(jitdata *jd)
                                emit_alu_imm_reg(cd, ALU_CMP, 0x80000000, var->vv.regoff);
 
                                disp = 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff);
                                disp += 5 + 2 + ((REG_RESULT == var->vv.regoff) ? 0 : 2);
                        }
 
                        emit_jcc(cd, CC_NE, disp);
 
                        /* XXX: change this when we use registers */
-                       emit_flds_membase(cd, REG_SP, var1->vv.regoff * 4);
+                       emit_flds_membase(cd, REG_SP, var1->vv.regoff);
                        emit_mov_imm_reg(cd, (ptrint) asm_builtin_f2i, REG_ITMP1);
                        emit_call_reg(cd, REG_ITMP1);
 
                        if (var->flags & INMEMORY) {
-                               emit_mov_reg_membase(cd, REG_RESULT, REG_SP, var->vv.regoff * 4);
+                               emit_mov_reg_membase(cd, REG_RESULT, REG_SP, var->vv.regoff);
 
                        } else {
                                M_INTMOVE(REG_RESULT, var->vv.regoff);
@@ -1678,19 +1678,19 @@ bool codegen_emit(jitdata *jd)
                        var1 = VAROP(iptr->s1);
 
                        if (var->flags & INMEMORY) {
-                               emit_fistpl_membase(cd, REG_SP, var->vv.regoff * 4);
+                               emit_fistpl_membase(cd, REG_SP, var->vv.regoff);
 
                                /* Round to nearest, 53-bit mode, exceptions masked */
                                disp = dseg_add_s4(cd, 0x027f);
                                emit_fldcw_membase(cd, REG_ITMP1, disp);
 
                                emit_alu_imm_membase(cd, ALU_CMP, 0x80000000, 
-                                                                        REG_SP, var->vv.regoff * 4);
+                                                                        REG_SP, var->vv.regoff);
 
                                disp = 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff);
                                disp += 5 + 2 + 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff);
 
                        } else {
                                /* XXX not thread safe! */
@@ -1705,19 +1705,19 @@ bool codegen_emit(jitdata *jd)
                                emit_alu_imm_reg(cd, ALU_CMP, 0x80000000, var->vv.regoff);
 
                                disp = 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff);
                                disp += 5 + 2 + ((REG_RESULT == var->vv.regoff) ? 0 : 2);
                        }
 
                        emit_jcc(cd, CC_NE, disp);
 
                        /* XXX: change this when we use registers */
-                       emit_fldl_membase(cd, REG_SP, var1->vv.regoff * 4);
+                       emit_fldl_membase(cd, REG_SP, var1->vv.regoff);
                        emit_mov_imm_reg(cd, (ptrint) asm_builtin_d2i, REG_ITMP1);
                        emit_call_reg(cd, REG_ITMP1);
 
                        if (var->flags & INMEMORY) {
-                               emit_mov_reg_membase(cd, REG_RESULT, REG_SP, var->vv.regoff * 4);
+                               emit_mov_reg_membase(cd, REG_RESULT, REG_SP, var->vv.regoff);
                        } else {
                                M_INTMOVE(REG_RESULT, var->vv.regoff);
                        }
@@ -1739,44 +1739,44 @@ bool codegen_emit(jitdata *jd)
                        var1 = VAROP(iptr->s1);
 
                        if (var->flags & INMEMORY) {
-                               emit_fistpll_membase(cd, REG_SP, var->vv.regoff * 4);
+                               emit_fistpll_membase(cd, REG_SP, var->vv.regoff);
 
                                /* Round to nearest, 53-bit mode, exceptions masked */
                                disp = dseg_add_s4(cd, 0x027f);
                                emit_fldcw_membase(cd, REG_ITMP1, disp);
 
                                emit_alu_imm_membase(cd, ALU_CMP, 0x80000000, 
-                                                                        REG_SP, var->vv.regoff * 4 + 4);
+                                                                        REG_SP, var->vv.regoff + 4);
 
                                disp = 6 + 4;
-                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff);
                                disp += 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff);
                                disp += 5 + 2;
                                disp += 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff);
                                disp += 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff * 4 + 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff + 4);
 
                                emit_jcc(cd, CC_NE, disp);
 
                                emit_alu_imm_membase(cd, ALU_CMP, 0, 
-                                                                        REG_SP, var->vv.regoff * 4);
+                                                                        REG_SP, var->vv.regoff);
 
                                disp = 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff);
                                disp += 5 + 2 + 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff);
 
                                emit_jcc(cd, CC_NE, disp);
 
                                /* XXX: change this when we use registers */
-                               emit_flds_membase(cd, REG_SP, var1->vv.regoff * 4);
+                               emit_flds_membase(cd, REG_SP, var1->vv.regoff);
                                emit_mov_imm_reg(cd, (ptrint) asm_builtin_f2l, REG_ITMP1);
                                emit_call_reg(cd, REG_ITMP1);
-                               emit_mov_reg_membase(cd, REG_RESULT, REG_SP, var->vv.regoff * 4);
+                               emit_mov_reg_membase(cd, REG_RESULT, REG_SP, var->vv.regoff);
                                emit_mov_reg_membase(cd, REG_RESULT2, 
-                                                                        REG_SP, var->vv.regoff * 4 + 4);
+                                                                        REG_SP, var->vv.regoff + 4);
 
                        } else {
                                log_text("F2L: longs have to be in memory");
@@ -1800,43 +1800,43 @@ bool codegen_emit(jitdata *jd)
                        var1 = VAROP(iptr->s1);
 
                        if (var->flags & INMEMORY) {
-                               emit_fistpll_membase(cd, REG_SP, var->vv.regoff * 4);
+                               emit_fistpll_membase(cd, REG_SP, var->vv.regoff);
 
                                /* Round to nearest, 53-bit mode, exceptions masked */
                                disp = dseg_add_s4(cd, 0x027f);
                                emit_fldcw_membase(cd, REG_ITMP1, disp);
 
                                emit_alu_imm_membase(cd, ALU_CMP, 0x80000000, 
-                                                                        REG_SP, var->vv.regoff * 4 + 4);
+                                                                        REG_SP, var->vv.regoff + 4);
 
                                disp = 6 + 4;
-                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff);
                                disp += 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff);
                                disp += 5 + 2;
                                disp += 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff);
                                disp += 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff * 4 + 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff + 4);
 
                                emit_jcc(cd, CC_NE, disp);
 
-                               emit_alu_imm_membase(cd, ALU_CMP, 0, REG_SP, var->vv.regoff * 4);
+                               emit_alu_imm_membase(cd, ALU_CMP, 0, REG_SP, var->vv.regoff);
 
                                disp = 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var1->vv.regoff);
                                disp += 5 + 2 + 3;
-                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff * 4);
+                               CALCOFFSETBYTES(disp, REG_SP, var->vv.regoff);
 
                                emit_jcc(cd, CC_NE, disp);
 
                                /* XXX: change this when we use registers */
-                               emit_fldl_membase(cd, REG_SP, var1->vv.regoff * 4);
+                               emit_fldl_membase(cd, REG_SP, var1->vv.regoff);
                                emit_mov_imm_reg(cd, (ptrint) asm_builtin_d2l, REG_ITMP1);
                                emit_call_reg(cd, REG_ITMP1);
-                               emit_mov_reg_membase(cd, REG_RESULT, REG_SP, var->vv.regoff * 4);
+                               emit_mov_reg_membase(cd, REG_RESULT, REG_SP, var->vv.regoff);
                                emit_mov_reg_membase(cd, REG_RESULT2, 
-                                                                        REG_SP, var->vv.regoff * 4 + 4);
+                                                                        REG_SP, var->vv.regoff + 4);
 
                        } else {
                                log_text("D2L: longs have to be in memory");
@@ -1979,10 +1979,10 @@ bool codegen_emit(jitdata *jd)
                        assert(var->flags & INMEMORY);
                        emit_mov_memindex_reg(cd, OFFSET(java_longarray, data[0]), 
                                                                  s1, s2, 3, REG_ITMP3);
-                       emit_mov_reg_membase(cd, REG_ITMP3, REG_SP, var->vv.regoff * 4);
+                       emit_mov_reg_membase(cd, REG_ITMP3, REG_SP, var->vv.regoff);
                        emit_mov_memindex_reg(cd, OFFSET(java_longarray, data[0]) + 4, 
                                                                  s1, s2, 3, REG_ITMP3);
-                       emit_mov_reg_membase(cd, REG_ITMP3, REG_SP, var->vv.regoff * 4 + 4);
+                       emit_mov_reg_membase(cd, REG_ITMP3, REG_SP, var->vv.regoff + 4);
                        break;
 
                case ICMD_FALOAD:     /* ..., arrayref, index  ==> ..., value         */
@@ -2079,10 +2079,10 @@ bool codegen_emit(jitdata *jd)
                        var = VAROP(iptr->sx.s23.s3);
 
                        assert(var->flags & INMEMORY);
-                       emit_mov_membase_reg(cd, REG_SP, var->vv.regoff * 4, REG_ITMP3);
+                       emit_mov_membase_reg(cd, REG_SP, var->vv.regoff, REG_ITMP3);
                        emit_mov_reg_memindex(cd, REG_ITMP3, OFFSET(java_longarray, data[0])
                                                                  , s1, s2, 3);
-                       emit_mov_membase_reg(cd, REG_SP, var->vv.regoff * 4 + 4, REG_ITMP3);
+                       emit_mov_membase_reg(cd, REG_SP, var->vv.regoff + 4, REG_ITMP3);
                        emit_mov_reg_memindex(cd, REG_ITMP3,
                                                            OFFSET(java_longarray, data[0]) + 4, s1, s2, 3);
                        break;
@@ -2950,10 +2950,10 @@ gen_method:
                                        } else {
                                                if (IS_2_WORD_TYPE(var->type)) {
                                                        d = emit_load(jd, iptr, var, REG_ITMP12_PACKED);
-                                                       M_LST(d, REG_SP, md->params[s3].regoff * 4);
+                                                       M_LST(d, REG_SP, md->params[s3].regoff);
                                                } else {
                                                        d = emit_load(jd, iptr, var, REG_ITMP1);
-                                                       M_IST(d, REG_SP, md->params[s3].regoff * 4);
+                                                       M_IST(d, REG_SP, md->params[s3].regoff);
                                                }
                                        }
 
@@ -2966,9 +2966,9 @@ gen_method:
                                        } else {
                                                d = emit_load(jd, iptr, var, REG_FTMP1);
                                                if (IS_2_WORD_TYPE(var->type))
-                                                       M_DST(d, REG_SP, md->params[s3].regoff * 4);
+                                                       M_DST(d, REG_SP, md->params[s3].regoff);
                                                else
-                                                       M_FST(d, REG_SP, md->params[s3].regoff * 4);
+                                                       M_FST(d, REG_SP, md->params[s3].regoff);
                                        }
                                }
                        } /* end of for */
@@ -3395,7 +3395,7 @@ gen_method:
                                /* Already Preallocated? */
                                if (!(var->flags & PREALLOC)) {
                                        if (var->flags & INMEMORY) {
-                                               M_ILD(REG_ITMP1, REG_SP, var->vv.regoff * 4);
+                                               M_ILD(REG_ITMP1, REG_SP, var->vv.regoff);
                                                M_IST(REG_ITMP1, REG_SP, (s1 + 3) * 4);
                                        }
                                        else
@@ -3636,8 +3636,8 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                if (!md->params[i].inmemory) {
                        /* no integer argument registers */
                } else {       /* float/double in memory can be copied like int/longs */
-                       s1 = (md->params[i].regoff + cd->stackframesize + 1) * 4;
-                       s2 = nmd->params[j].regoff * 4;
+                       s1 = md->params[i].regoff + cd->stackframesize * 4 + 4;
+                       s2 = nmd->params[j].regoff;
 
                        M_ILD(REG_ITMP1, REG_SP, s1);
                        M_IST(REG_ITMP1, REG_SP, s2);
index 3570a26be67c724f88cf860b72d5fa9568dd144c..c1fb58e4b093b4f09b76094736c9ab16694364ce 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: emit.c 7818 2007-04-25 19:47:50Z twisti $
+   $Id: emit.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -73,7 +73,7 @@ inline s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
                switch (src->type) {
                case TYPE_INT:
@@ -124,7 +124,7 @@ inline s4 emit_load_low(jitdata *jd, instruction *iptr, varinfo *src,s4 tempreg)
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
                M_ILD(tempreg, REG_SP, disp);
 
@@ -158,7 +158,7 @@ inline s4 emit_load_high(jitdata *jd, instruction *iptr,varinfo *src,s4 tempreg)
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
                M_ILD(tempreg, REG_SP, disp + 4);
 
@@ -189,7 +189,7 @@ inline void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
        if (IS_INMEMORY(dst->flags)) {
                COUNT_SPILLS;
 
-               disp = dst->vv.regoff * 4;
+               disp = dst->vv.regoff;
 
                switch (dst->type) {
                case TYPE_INT:
@@ -231,7 +231,7 @@ inline void emit_store_low(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
 
        if (IS_INMEMORY(dst->flags)) {
                COUNT_SPILLS;
-               M_IST(GET_LOW_REG(d), REG_SP, dst->vv.regoff * 4);
+               M_IST(GET_LOW_REG(d), REG_SP, dst->vv.regoff);
        }
 }
 
@@ -255,7 +255,7 @@ inline void emit_store_high(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
 
        if (IS_INMEMORY(dst->flags)) {
                COUNT_SPILLS;
-               M_IST(GET_HIGH_REG(d), REG_SP, dst->vv.regoff * 4 + 4);
+               M_IST(GET_HIGH_REG(d), REG_SP, dst->vv.regoff + 4);
        }
 }
 
index 3ce42ba32cf7bb613a609519c76235631e426cc0..6f30070193d3daa513772e03e7df180d0fbc2a29 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md-abi.c 7713 2007-04-15 21:49:48Z twisti $
+   $Id: md-abi.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -114,7 +114,7 @@ void md_param_alloc(methoddesc *md)
 
        for (i = 0; i < md->paramcount; i++, pd++) {
                pd->inmemory = true;
-               pd->regoff = stacksize;
+               pd->regoff = stacksize * 4;
                stacksize += IS_2_WORD_TYPE(md->paramtypes[i].type) ? 2 : 1;
        }
 
index b6866e503639e4b9f0fb132bcdfd82299dadc329..824ebe5b0c34b56382f5fe8000809763c3bbaddd 100644 (file)
@@ -214,21 +214,21 @@ bool codegen_emit(jitdata *jd)
                        case TYPE_INT:
                                if (!IS_INMEMORY(var->flags)) {      /* stack arg -> register */
                                        if (IS_2_WORD_TYPE(t))  {
-                                               M_LLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1 + 1) * 4);
+                                               M_LLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1 + 4);
                                        } else {
-                                               M_ILD(var->vv.regoff, REG_SP, (cd->stackframesize + s1 + 1) * 4);
+                                               M_ILD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1 + 4);
                                        }
                                } else {                             /* stack arg -> spilled  */
 #if 1
-                                       M_ILD(REG_ITMP1, REG_SP, (cd->stackframesize + s1 + 1) * 4);
-                                       M_IST(REG_ITMP1, REG_SP, var->vv.regoff * 4);
+                                       M_ILD(REG_ITMP1, REG_SP, cd->stackframesize * 4 + s1 + 4);
+                                       M_IST(REG_ITMP1, REG_SP, var->vv.regoff);
                                        if (IS_2_WORD_TYPE(t)) {
-                                               M_ILD(REG_ITMP1, REG_SP, (cd->stackframesize + s1 + 1) * 4 + 4);
-                                               M_IST(REG_ITMP1, REG_SP, var->vv.regoff * 4 + 4);
+                                               M_ILD(REG_ITMP1, REG_SP, cd->stackframesize * 4 + s1 + 4 + 4);
+                                               M_IST(REG_ITMP1, REG_SP, var->vv.regoff + 4);
                                        }
 #else
                                        /* Reuse Memory Position on Caller Stack */
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 4 + s1;
 #endif
                                } 
                                break;
@@ -237,36 +237,36 @@ bool codegen_emit(jitdata *jd)
                        case TYPE_DBL:
                                if (!IS_INMEMORY(var->flags)) {      /* stack-arg -> register */
                                        if (IS_2_WORD_TYPE(t))  {
-                                               M_DLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1 + 1) * 4);
+                                               M_DLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1 + 4);
                                        } else {
-                                               M_FLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1 + 1) * 4);
+                                               M_FLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1 + 4);
                                        }
                                } else {                             /* stack-arg -> spilled  */
 #if 1
                                        if (IS_2_WORD_TYPE(t)) {
-                                               M_DLD(REG_FTMP1, REG_SP, (cd->stackframesize + s1 + 1) * 4);
-                                               M_DST(REG_FTMP1, REG_SP, var->vv.regoff * 4);
+                                               M_DLD(REG_FTMP1, REG_SP, cd->stackframesize * 4 + s1 + 4);
+                                               M_DST(REG_FTMP1, REG_SP, var->vv.regoff);
                                        } else {
-                                               M_FLD(REG_FTMP1, REG_SP, (cd->stackframesize + s1 + 1) * 4);
-                                               M_FST(REG_FTMP1, REG_SP, var->vv.regoff * 4);
+                                               M_FLD(REG_FTMP1, REG_SP, cd->stackframesize * 4 + s1 + 4);
+                                               M_FST(REG_FTMP1, REG_SP, var->vv.regoff);
                                        }
 #else
                                        /* Reuse Memory Position on Caller Stack */
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 4 + s1;
 #endif
                                }
                                break;
 #endif /* SOFTFLOAT */
                        case TYPE_ADR:
                                if (!IS_INMEMORY(var->flags)) {      /* stack-arg -> register */
-                                       M_ALD(var->vv.regoff, REG_SP, (cd->stackframesize + s1 + 1) * 4);
+                                       M_ALD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1 + 4);
                                } else {                             /* stack-arg -> spilled  */
 #if 1
-                                       M_ALD(REG_ATMP1, REG_SP, (cd->stackframesize + s1 + 1) * 4);
-                                       M_AST(REG_ATMP1, REG_SP, var->vv.regoff * 4);
+                                       M_ALD(REG_ATMP1, REG_SP, cd->stackframesize * 4 + s1 + 4);
+                                       M_AST(REG_ATMP1, REG_SP, var->vv.regoff);
 #else
                                /* Reuse Memory Position on Caller Stack */
-                               var->vv.regoff = cd->stackframesize + s1;
+                               var->vv.regoff = cd->stackframesize * 4 + s1;
 #endif
                                }
                                break;
@@ -1663,27 +1663,27 @@ bool codegen_emit(jitdata *jd)
 #endif
                                        case TYPE_LNG:
                                                d = emit_load(jd, iptr, var, REG_ITMP12_PACKED);
-                                               M_LST(d, REG_SP, md->params[s3].regoff*4);
+                                               M_LST(d, REG_SP, md->params[s3].regoff);
                                                break;
 #if defined(ENABLE_SOFTFLOAT)
                                        case TYPE_FLT:
 #endif
                                        case TYPE_INT:
                                                d = emit_load(jd, iptr, var, REG_ITMP1);
-                                               M_IST(d, REG_SP, md->params[s3].regoff*4);
+                                               M_IST(d, REG_SP, md->params[s3].regoff);
                                                break;
                                        case TYPE_ADR:
                                                d = emit_load(jd, iptr, var, REG_ATMP1);
-                                               M_AST(d, REG_SP, md->params[s3].regoff*4);
+                                               M_AST(d, REG_SP, md->params[s3].regoff);
                                                break;
 #if !defined(ENABLE_SOFTFLOAT)
                                        case TYPE_FLT:
                                                d = emit_load(jd, iptr, var, REG_FTMP1);
-                                               M_FST(d, REG_SP, md->params[s3].regoff*4);
+                                               M_FST(d, REG_SP, md->params[s3].regoff);
                                                break;
                                        case TYPE_DBL:
                                                d = emit_load(jd, iptr, var, REG_FTMP1);
-                                               M_DST(d, REG_SP, md->params[s3].regoff*4);
+                                               M_DST(d, REG_SP, md->params[s3].regoff);
                                                break;
 #endif
                                        default:
@@ -2503,8 +2503,8 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                /* all arguments via stack */
                assert(md->params[i].inmemory);                                         
 
-               s1 = (md->params[i].regoff + cd->stackframesize + 1) * 4;
-               s2 = nmd->params[j].regoff * 4;
+               s1 = md->params[i].regoff + cd->stackframesize * 4 + 4;
+               s2 = nmd->params[j].regoff;
 
                /* simply copy argument stack */
                M_ILD(REG_ITMP1, REG_SP, s1);
index 94d1926b3f4ce1f2be1b5a2e11af3b34d524c0e8..dd00d97eafdb92d2b12bc78ba28bc079c8326c40 100644 (file)
@@ -166,23 +166,23 @@ inline void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
                        case TYPE_DBL:
 #endif
                        case TYPE_LNG:
-                               M_LST(d, REG_SP, dst->vv.regoff * 4);
+                               M_LST(d, REG_SP, dst->vv.regoff);
                                break;
 #if defined(ENABLE_SOFTFLOAT)
                        case TYPE_FLT:
 #endif
                        case TYPE_INT:
-                               M_IST(d, REG_SP, dst->vv.regoff * 4);
+                               M_IST(d, REG_SP, dst->vv.regoff);
                                break;
                        case TYPE_ADR:
-                               M_AST(d, REG_SP, dst->vv.regoff * 4);
+                               M_AST(d, REG_SP, dst->vv.regoff);
                                break;
 #if !defined(ENABLE_SOFTFLOAT)
                        case TYPE_DBL:
-                               M_DST(d, REG_SP, dst->vv.regoff * 4);
+                               M_DST(d, REG_SP, dst->vv.regoff);
                                break;
                        case TYPE_FLT:
-                               M_FST(d, REG_SP, dst->vv.regoff * 4);
+                               M_FST(d, REG_SP, dst->vv.regoff);
                                break;
 #endif
                        default:
@@ -211,7 +211,7 @@ s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
        
                switch (src->type)      {
 #if defined(ENABLE_SOFTFLOAT)
@@ -354,7 +354,7 @@ s4 emit_load_low(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
                M_ILD(tempreg, REG_SP, disp + 4);
                reg = tempreg;
        } else {
@@ -378,7 +378,7 @@ s4 emit_load_high(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
 
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
                M_ILD(tempreg, REG_SP, disp);
                reg = tempreg;
        } else {
index 4a90563ca16495ab30964e604d46165f729c138e..3a46003a8c0340fbc5e1d3acfcbcbda5c7060fb2 100644 (file)
@@ -115,7 +115,7 @@ void md_param_alloc(methoddesc *md)
 
        for (i=0; i<md->paramcount; i++, pd++)  {
                pd->inmemory = true;
-               pd->regoff = stacksize;
+               pd->regoff = stacksize * 4;
                stacksize += IS_2_WORD_TYPE(md->paramtypes[i].type) ? 2:1;
        }
 
index 684c6ce4ea9b04acea4b4912119de57740b60982..541620d2d5caddfbcbe18e4621f192615e43add7 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 8011 2007-06-05 10:06:18Z twisti $
+   $Id: codegen.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -222,7 +222,7 @@ bool codegen_emit(jitdata *jd)
                                if (!(var->flags & INMEMORY))
                                        M_INTMOVE(s1, var->vv.regoff);
                                else
-                                       M_LST(s1, REG_SP, var->vv.regoff * 8);
+                                       M_LST(s1, REG_SP, var->vv.regoff);
 #else
                                if (!(var->flags & INMEMORY)) {
                                        if (IS_2_WORD_TYPE(t))
@@ -232,25 +232,25 @@ bool codegen_emit(jitdata *jd)
                                }
                                else {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LST(s1, REG_SP, var->vv.regoff * 8);
+                                               M_LST(s1, REG_SP, var->vv.regoff);
                                        else
-                                               M_IST(s1, REG_SP, var->vv.regoff * 8);
+                                               M_IST(s1, REG_SP, var->vv.regoff);
                                }
 #endif
                        }
                        else {                                   /* stack arguments       */
                                if (!(var->flags & INMEMORY)) {
 #if SIZEOF_VOID_P == 8
-                                       M_LLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8);
+                                       M_LLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1);
 #else
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8);
+                                               M_LLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1);
                                        else
-                                               M_ILD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8);
+                                               M_ILD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1);
 #endif
                                }
                                else
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 8 + s1;
                        }
                }
                else {                                       /* floating args         */
@@ -263,20 +263,20 @@ bool codegen_emit(jitdata *jd)
                                }
                                else {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DST(s1, REG_SP, var->vv.regoff * 8);
+                                               M_DST(s1, REG_SP, var->vv.regoff);
                                        else
-                                               M_FST(s1, REG_SP, var->vv.regoff * 8);
+                                               M_FST(s1, REG_SP, var->vv.regoff);
                                }
                        }
                        else {
                                if (!(var->flags & INMEMORY)) {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8);
+                                               M_DLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1);
                                        else
-                                               M_FLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8);
+                                               M_FLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1);
                                }
                                else
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 8 + s1;
                        }
                }
        }
@@ -3056,7 +3056,7 @@ gen_method:
                                        }
                                        else  {
                                                s1 = emit_load(jd, iptr, var, REG_ITMP1);
-                                               M_LST(s1, REG_SP, d * 8);
+                                               M_LST(s1, REG_SP, d);
                                        }
 #else
                                        if (!md->params[s3].inmemory) {
@@ -3070,11 +3070,11 @@ gen_method:
                                        else {
                                                if (IS_2_WORD_TYPE(var->type)) {
                                                        s1 = emit_load(jd, iptr, var, REG_ITMP12_PACKED);
-                                                       M_LST(s1, REG_SP, d * 8);
+                                                       M_LST(s1, REG_SP, d);
                                                }
                                                else {
                                                        s1 = emit_load(jd, iptr, var, REG_ITMP1);
-                                                       M_IST(s1, REG_SP, d * 8);
+                                                       M_IST(s1, REG_SP, d);
                                                }
                                        }
 #endif
@@ -3090,9 +3090,9 @@ gen_method:
                                        else {
                                                s1 = emit_load(jd, iptr, var, REG_FTMP1);
                                                if (IS_2_WORD_TYPE(var->type))
-                                                       M_DST(s1, REG_SP, d * 8);
+                                                       M_DST(s1, REG_SP, d);
                                                else
-                                                       M_FST(s1, REG_SP, d * 8);
+                                                       M_FST(s1, REG_SP, d);
                                        }
                                }
                        }
@@ -3818,30 +3818,30 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                }
                                else {
 #if SIZEOF_VOID_P == 8
-                                       M_LST(s1, REG_SP, s2 * 8);
+                                       M_LST(s1, REG_SP, s2);
 #else
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LST(s1, REG_SP, s2 * 4);
+                                               M_LST(s1, REG_SP, s2);
                                        else
-                                               M_IST(s1, REG_SP, s2 * 4);
+                                               M_IST(s1, REG_SP, s2);
 #endif
                                }
                        }
                        else {
-                               s1 = md->params[i].regoff + cd->stackframesize;
+                               s1 = md->params[i].regoff + cd->stackframesize * 8;
                                s2 = nmd->params[j].regoff;
 
 #if SIZEOF_VOID_P == 8
-                               M_LLD(REG_ITMP1, REG_SP, s1 * 8);
-                               M_LST(REG_ITMP1, REG_SP, s2 * 8);
+                               M_LLD(REG_ITMP1, REG_SP, s1);
+                               M_LST(REG_ITMP1, REG_SP, s2);
 #else
                                if (IS_2_WORD_TYPE(t)) {
-                                       M_LLD(REG_ITMP12_PACKED, REG_SP, s1 * 8);
-                                       M_LST(REG_ITMP12_PACKED, REG_SP, s2 * 4);
+                                       M_LLD(REG_ITMP12_PACKED, REG_SP, s1);
+                                       M_LST(REG_ITMP12_PACKED, REG_SP, s2);
                                }
                                else {
-                                       M_ILD(REG_ITMP1, REG_SP, s1 * 8);
-                                       M_IST(REG_ITMP1, REG_SP, s2 * 4);
+                                       M_ILD(REG_ITMP1, REG_SP, s1);
+                                       M_IST(REG_ITMP1, REG_SP, s2);
                                }
 #endif
                        }
@@ -3878,42 +3878,42 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                else {
 #if SIZEOF_VOID_P == 8
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DST(s1, REG_SP, s2 * 8);
+                                               M_DST(s1, REG_SP, s2);
                                        else
-                                               M_FST(s1, REG_SP, s2 * 8);
+                                               M_FST(s1, REG_SP, s2);
 #else
                                        /* s1 may have been originally in 2 int registers,
                                           but was moved out by the native function
                                           argument(s), just get low register */
 
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DST(GET_LOW_REG(s1), REG_SP, s2 * 4);
+                                               M_DST(GET_LOW_REG(s1), REG_SP, s2);
                                        else
-                                               M_FST(GET_LOW_REG(s1), REG_SP, s2 * 4);
+                                               M_FST(GET_LOW_REG(s1), REG_SP, s2);
 #endif
                                }
                        }
                        else {
-                               s1 = md->params[i].regoff + cd->stackframesize;
+                               s1 = md->params[i].regoff + cd->stackframesize * 8;
                                s2 = nmd->params[j].regoff;
 
 #if SIZEOF_VOID_P == 8
                                if (IS_2_WORD_TYPE(t)) {
-                                       M_DLD(REG_FTMP1, REG_SP, s1 * 8);
-                                       M_DST(REG_FTMP1, REG_SP, s2 * 8);
+                                       M_DLD(REG_FTMP1, REG_SP, s1);
+                                       M_DST(REG_FTMP1, REG_SP, s2);
                                }
                                else {
-                                       M_FLD(REG_FTMP1, REG_SP, s1 * 8);
-                                       M_FST(REG_FTMP1, REG_SP, s2 * 8);
+                                       M_FLD(REG_FTMP1, REG_SP, s1);
+                                       M_FST(REG_FTMP1, REG_SP, s2);
                                }
 #else
                                if (IS_2_WORD_TYPE(t)) {
-                                       M_DLD(REG_FTMP1, REG_SP, s1 * 8);
-                                       M_DST(REG_FTMP1, REG_SP, s2 * 4);
+                                       M_DLD(REG_FTMP1, REG_SP, s1);
+                                       M_DST(REG_FTMP1, REG_SP, s2);
                                }
                                else {
-                                       M_FLD(REG_FTMP1, REG_SP, s1 * 8);
-                                       M_FST(REG_FTMP1, REG_SP, s2 * 4);
+                                       M_FLD(REG_FTMP1, REG_SP, s1);
+                                       M_FST(REG_FTMP1, REG_SP, s2);
                                }
 #endif
                        }
index 1a5b3cbd4aa9669593b60958d0f26f592b7e1804..d3352fbcdb666c482fe8c6728f58161cc15b51a3 100644 (file)
@@ -74,7 +74,7 @@ s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (src->flags & INMEMORY) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 8;
+               disp = src->vv.regoff;
 
                switch (src->type) {
 #if SIZEOF_VOID_P == 8
@@ -133,7 +133,7 @@ s4 emit_load_low(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (src->flags & INMEMORY) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 8;
+               disp = src->vv.regoff;
 
 #if WORDS_BIGENDIAN == 1
                M_ILD(tempreg, REG_SP, disp + 4);
@@ -173,7 +173,7 @@ s4 emit_load_high(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (src->flags & INMEMORY) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 8;
+               disp = src->vv.regoff;
 
 #if WORDS_BIGENDIAN == 1
                M_ILD(tempreg, REG_SP, disp);
@@ -209,7 +209,7 @@ void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
        if (dst->flags & INMEMORY) {
                COUNT_SPILLS;
 
-               disp = dst->vv.regoff * 8;
+               disp = dst->vv.regoff;
 
                switch (dst->type) {
 #if SIZEOF_VOID_P == 8
index b885a497122c41cee7cdfe4096e1f696b8d2bb92..b14238d4b371c0c0b8ea6f58df3a1dd928619c9e 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md-abi.c 8074 2007-06-13 22:27:17Z twisti $
+   $Id: md-abi.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -295,7 +295,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 8;
                                stacksize++;
                        }
                        break;
@@ -310,7 +310,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 8;
                                stacksize++;
                        }
                        break;
@@ -344,8 +344,8 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->index    = -1;
-                               pd->regoff   = stacksize;
+                               pd->index    = stacksize;
+                               pd->regoff   = stacksize * 8;
                                stacksize++;
                        }
                        break;
@@ -371,8 +371,8 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->index    = -1;
-                               pd->regoff   = stacksize;
+                               pd->index    = stacksize;
+                               pd->regoff   = stacksize * 8;
                                stacksize++;
                        }
                        break;
@@ -388,8 +388,8 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->index    = -1;
-                               pd->regoff   = stacksize;
+                               pd->index    = stacksize;
+                               pd->regoff   = stacksize * 8;
                                stacksize++;
                        }
                        break;
@@ -418,7 +418,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 8;
                        }
                        stacksize++;
                        break;
@@ -443,7 +443,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 8;
                        }
                        stacksize += 2;
                        break;
@@ -543,7 +543,7 @@ void md_param_alloc_native(methoddesc *md)
                                        ALIGN_2(stacksize);
 
                                        pd->inmemory = true;
-                                       pd->regoff   = stacksize;
+                                       pd->regoff   = stacksize * 4;
                                }
                                stacksize += 2;
                        }
@@ -558,7 +558,7 @@ void md_param_alloc_native(methoddesc *md)
                                }
                                else {
                                        pd->inmemory = true;
-                                       pd->regoff   = stacksize;
+                                       pd->regoff   = stacksize * 4;
                                }
                                stacksize++;
                        }
@@ -583,7 +583,7 @@ void md_param_alloc_native(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 4;
                        }
                        stacksize++;
                        break;
@@ -607,7 +607,7 @@ void md_param_alloc_native(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 4;
                        }
                        stacksize += 2;
                        break;
index 04a5e0bec4336b3f53dfc4a61b9a23145005a71d..8660f61033862844100ea9d468aa76194f5d61d4 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 7864 2007-05-03 21:17:26Z twisti $
+   $Id: codegen.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -255,29 +255,29 @@ bool codegen_emit(jitdata *jd)
                                }
                                else {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LST(s1, REG_SP, var->vv.regoff * 4);
+                                               M_LST(s1, REG_SP, var->vv.regoff);
                                        else
-                                               M_IST(s1, REG_SP, var->vv.regoff * 4);
+                                               M_IST(s1, REG_SP, var->vv.regoff);
                                }
                        }
                        else {
                                if (!IS_INMEMORY(var->flags)) {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_LLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
                                        else
-                                               M_ILD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_ILD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
                                }
                                else {
 #if 1
-                                       M_ILD(REG_ITMP1, REG_SP, (cd->stackframesize + s1) * 4);
-                                       M_IST(REG_ITMP1, REG_SP, var->vv.regoff * 4);
+                                       M_ILD(REG_ITMP1, REG_SP, cd->stackframesize * 4 + s1);
+                                       M_IST(REG_ITMP1, REG_SP, var->vv.regoff);
                                        if (IS_2_WORD_TYPE(t)) {
-                                               M_ILD(REG_ITMP1, REG_SP, (cd->stackframesize + s1) * 4 +4);
-                                               M_IST(REG_ITMP1, REG_SP, var->vv.regoff * 4 + 4);
+                                               M_ILD(REG_ITMP1, REG_SP, cd->stackframesize * 4 + s1 + 4);
+                                               M_IST(REG_ITMP1, REG_SP, var->vv.regoff + 4);
                                        }
 #else
                                        /* Reuse Memory Position on Caller Stack */
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 4 + s1;
 #endif
                                }
                        }
@@ -288,32 +288,32 @@ bool codegen_emit(jitdata *jd)
                                        M_FLTMOVE(s1, var->vv.regoff);
                                else {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DST(s1, REG_SP, var->vv.regoff * 4);
+                                               M_DST(s1, REG_SP, var->vv.regoff);
                                        else
-                                               M_FST(s1, REG_SP, var->vv.regoff * 4);
+                                               M_FST(s1, REG_SP, var->vv.regoff);
                                }
                        }
                        else {
                                if (!IS_INMEMORY(var->flags)) {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_DLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
                                        else
-                                               M_FLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_FLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
                                }
                                else {
 #if 1
                                        if (IS_2_WORD_TYPE(t)) {
-                                               M_DLD(REG_FTMP1, REG_SP, (cd->stackframesize + s1) * 4);
-                                               M_DST(REG_FTMP1, REG_SP, var->vv.regoff * 4);
+                                               M_DLD(REG_FTMP1, REG_SP, cd->stackframesize * 4 + s1);
+                                               M_DST(REG_FTMP1, REG_SP, var->vv.regoff);
                                                var->vv.regoff = cd->stackframesize + s1;
 
                                        } else {
-                                               M_FLD(REG_FTMP1, REG_SP, (cd->stackframesize + s1) * 4);
-                                               M_FST(REG_FTMP1, REG_SP, var->vv.regoff * 4);
+                                               M_FLD(REG_FTMP1, REG_SP, cd->stackframesize * 4 + s1);
+                                               M_FST(REG_FTMP1, REG_SP, var->vv.regoff);
                                        }
 #else
                                        /* Reuse Memory Position on Caller Stack */
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 4 + s1;
 #endif
                                }
                        }
@@ -2414,11 +2414,11 @@ gen_method:
                                        else {
                                                if (IS_2_WORD_TYPE(var->type)) {
                                                        s1 = emit_load(jd, iptr, var, REG_ITMP12_PACKED);
-                                                       M_LST(s1, REG_SP, d * 4);
+                                                       M_LST(s1, REG_SP, d);
                                                }
                                                else {
                                                        s1 = emit_load(jd, iptr, var, REG_ITMP1);
-                                                       M_IST(s1, REG_SP, d * 4);
+                                                       M_IST(s1, REG_SP, d);
                                                }
                                        }
                                }
@@ -2430,9 +2430,9 @@ gen_method:
                                        else {
                                                s1 = emit_load(jd, iptr, var, REG_FTMP1);
                                                if (IS_2_WORD_TYPE(var->type))
-                                                       M_DST(s1, REG_SP, d * 4);
+                                                       M_DST(s1, REG_SP, d);
                                                else
-                                                       M_FST(s1, REG_SP, d * 4);
+                                                       M_FST(s1, REG_SP, d);
                                        }
                                }
                        }
@@ -3121,22 +3121,22 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                }
                                else {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LST(s1, REG_SP, s2 * 4);
+                                               M_LST(s1, REG_SP, s2);
                                        else
-                                               M_IST(s1, REG_SP, s2 * 4);
+                                               M_IST(s1, REG_SP, s2);
                                }
                        }
                        else {
-                               s1 = md->params[i].regoff + cd->stackframesize;
+                               s1 = md->params[i].regoff + cd->stackframesize * 4;
                                s2 = nmd->params[j].regoff;
 
-                               M_ILD(REG_ITMP1, REG_SP, s1 * 4);
+                               M_ILD(REG_ITMP1, REG_SP, s1);
                                if (IS_2_WORD_TYPE(t))
-                                       M_ILD(REG_ITMP2, REG_SP, s1 * 4 + 4);
+                                       M_ILD(REG_ITMP2, REG_SP, s1 + 4);
 
-                               M_IST(REG_ITMP1, REG_SP, s2 * 4);
+                               M_IST(REG_ITMP1, REG_SP, s2);
                                if (IS_2_WORD_TYPE(t))
-                                       M_IST(REG_ITMP2, REG_SP, s2 * 4 + 4);
+                                       M_IST(REG_ITMP2, REG_SP, s2 + 4);
                        }
                }
                else {
@@ -3144,16 +3144,16 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                           argument registers keep unchanged. */
 
                        if (md->params[i].inmemory) {
-                               s1 = md->params[i].regoff + cd->stackframesize;
+                               s1 = md->params[i].regoff + cd->stackframesize * 4;
                                s2 = nmd->params[j].regoff;
 
                                if (IS_2_WORD_TYPE(t)) {
-                                       M_DLD(REG_FTMP1, REG_SP, s1 * 4);
-                                       M_DST(REG_FTMP1, REG_SP, s2 * 4);
+                                       M_DLD(REG_FTMP1, REG_SP, s1);
+                                       M_DST(REG_FTMP1, REG_SP, s2);
                                }
                                else {
-                                       M_FLD(REG_FTMP1, REG_SP, s1 * 4);
-                                       M_FST(REG_FTMP1, REG_SP, s2 * 4);
+                                       M_FLD(REG_FTMP1, REG_SP, s1);
+                                       M_FST(REG_FTMP1, REG_SP, s2);
                                }
                        }
                }
index 543cb726415344c88fbc88f7a533e91d2be30c31..0fe1cb5e358d14fcd74c534b603d0d6a1150fc88 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md-abi.c 7988 2007-05-30 20:53:56Z twisti $
+   $Id: md-abi.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -202,7 +202,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 4;
                        }
                        stacksize++;
                        break;
@@ -217,7 +217,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 4;
                                iarg         = INT_ARG_CNT;
                        }
                        stacksize += 2;
@@ -232,7 +232,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 4;
                        }
                        stacksize++;
                        break;
@@ -246,7 +246,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->regoff   = stacksize;
+                               pd->regoff   = stacksize * 4;
                        }
                        stacksize += 2;
                        break;
index 5f8fd45e4e97faa79079709a0793f8f7350b9f17..a5ac7509bc6f1a826e67dc5a9f210a7bedd3b7b7 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: emit.c 7816 2007-04-25 19:38:46Z twisti $
+   $Id: emit.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -74,7 +74,7 @@ s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
                switch (src->type) {
                case TYPE_INT:
@@ -124,7 +124,7 @@ s4 emit_load_low(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
                M_ILD(tempreg, REG_SP, disp + 4);
 
@@ -158,7 +158,7 @@ s4 emit_load_high(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
                M_ILD(tempreg, REG_SP, disp);
 
@@ -189,7 +189,7 @@ void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
        if (IS_INMEMORY(dst->flags)) {
                COUNT_SPILLS;
 
-               disp = dst->vv.regoff * 4;
+               disp = dst->vv.regoff;
 
                switch (dst->type) {
                case TYPE_INT:
@@ -778,7 +778,7 @@ void emit_verbosecall_enter(jitdata *jd)
                                }
                        }
                        else {
-                               s1 = (md->params[p].regoff + cd->stackframesize) * 4 
+                               s1 = md->params[p].regoff + cd->stackframesize * 4 
                                        + stack_size;
                                if (IS_2_WORD_TYPE(t)) {
                                        M_ILD(REG_ITMP2, REG_SP, s1);
index c26a7f0c04b6b0c1b1b27edd2f9605d613ffdff8..35b7b71f7ecfacdaf30bc326fb6cc24e93a761cc 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md-abi.c 7814 2007-04-25 19:36:15Z twisti $
+   $Id: md-abi.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -207,7 +207,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory  = true;
-                               pd->regoff    = stacksize;
+                               pd->regoff    = stacksize * 4;
                                stacksize++;
                        }
                        break;
@@ -224,7 +224,7 @@ void md_param_alloc(methoddesc *md)
                        else {
                                _ALIGN(stacksize);
                                pd->inmemory  = true;
-                               pd->regoff    = stacksize;
+                               pd->regoff    = stacksize * 4;
                                iarg          = INT_ARG_CNT;
                                stacksize    += 2;
                        }
@@ -238,7 +238,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory  = true;
-                               pd->regoff    = stacksize;
+                               pd->regoff    = stacksize * 4;
                                stacksize++;
                        }
                        break;
@@ -252,7 +252,7 @@ void md_param_alloc(methoddesc *md)
                        else {
                                _ALIGN(stacksize);
                                pd->inmemory  = true;
-                               pd->regoff    = stacksize;
+                               pd->regoff    = stacksize * 4;
                                stacksize    += 2;
                        }
                        break;
index 4f656aeba0c68e7666c5cee688090e56fd1940a1..9e8181666be7bda357ce911a8af7fdc3d4c73cac 100644 (file)
@@ -127,7 +127,7 @@ void md_param_alloc(methoddesc *md)
                                iarg++;
                        } else {
                                pd->inmemory = true;
-                               pd->regoff = stacksize;
+                               pd->regoff = stacksize * 4;
                                stacksize++;
                        }
                        break;
@@ -141,7 +141,7 @@ void md_param_alloc(methoddesc *md)
                        } else {
                                _ALIGN(stacksize);
                                pd->inmemory = true;
-                               pd->regoff = stacksize;
+                               pd->regoff = stacksize * 4;
                                iarg = INT_ARG_CNT;
                                stacksize += 2;
                        }
@@ -153,7 +153,7 @@ void md_param_alloc(methoddesc *md)
                                farg++;
                        } else {
                                pd->inmemory = true;
-                               pd->regoff = stacksize;
+                               pd->regoff = stacksize * 4;
                                stacksize++;
                        }
                        break;
@@ -165,7 +165,7 @@ void md_param_alloc(methoddesc *md)
                        } else {
                                _ALIGN(stacksize);
                                pd->inmemory = true;
-                               pd->regoff = stacksize;
+                               pd->regoff = stacksize * 4;
                                stacksize += 2;
                        }
                        break;
index 261b2590d5949be14d8a27d3952e3c9c5bcba5f7..b9e10f244759db107f40d7f6eca75aee6917b306 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 7982 2007-05-30 20:01:49Z twisti $
+   $Id: codegen.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -227,13 +227,13 @@ bool codegen_emit(jitdata *jd)
                                if (!IS_INMEMORY(var->flags))
                                        M_INTMOVE(s1, var->vv.regoff);
                                else
-                                       M_LST(s1, REG_SP, var->vv.regoff * 8);
+                                       M_LST(s1, REG_SP, var->vv.regoff);
                        }
                        else {
                                if (!IS_INMEMORY(var->flags))
-                                       M_LLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8);
+                                       M_LLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1);
                                else
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 8 + s1;
                        }
                }
                else {
@@ -241,17 +241,17 @@ bool codegen_emit(jitdata *jd)
                                if (!IS_INMEMORY(var->flags))
                                        M_FLTMOVE(s1, var->vv.regoff);
                                else
-                                       M_DST(s1, REG_SP, var->vv.regoff * 8);
+                                       M_DST(s1, REG_SP, var->vv.regoff);
                        }
                        else {
                                if (!(var->flags & INMEMORY)) {
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8);
+                                               M_DLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1);
                                        else
-                                               M_DLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8);
+                                               M_DLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1);
                                }
                                else
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 8 + s1;
                        }
                }
        }
@@ -2160,7 +2160,7 @@ gen_method:
                                        }
                                        else {
                                                s1 = emit_load(jd, iptr, var, REG_ITMP1);
-                                               M_LST(s1, REG_SP, d * 8);
+                                               M_LST(s1, REG_SP, d);
                                        }
                                }
                                else {
@@ -2170,7 +2170,7 @@ gen_method:
                                        }
                                        else {
                                                s1 = emit_load(jd, iptr, var, REG_FTMP1);
-                                               M_DST(s1, REG_SP, d * 8);
+                                               M_DST(s1, REG_SP, d);
                                        }
                                }
                        }
@@ -2859,14 +2859,14 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                if (!nmd->params[j].inmemory)
                                        M_INTMOVE(s1, s2);
                                else
-                                       M_LST(s1, REG_SP, s2 * 8);
+                                       M_LST(s1, REG_SP, s2);
                        }
                        else {
-                               s1 = md->params[i].regoff + cd->stackframesize;
+                               s1 = md->params[i].regoff + cd->stackframesize * 8;
                                s2 = nmd->params[j].regoff;
 
-                               M_LLD(REG_ITMP1, REG_SP, s1 * 8);
-                               M_LST(REG_ITMP1, REG_SP, s2 * 8);
+                               M_LLD(REG_ITMP1, REG_SP, s1);
+                               M_LST(REG_ITMP1, REG_SP, s2);
                        }
                }
                else {
@@ -2874,15 +2874,15 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                           argument registers keep unchanged. */
 
                        if (md->params[i].inmemory) {
-                               s1 = md->params[i].regoff + cd->stackframesize;
+                               s1 = md->params[i].regoff + cd->stackframesize * 8;
                                s2 = nmd->params[j].regoff;
 
-                               M_DLD(REG_FTMP1, REG_SP, s1 * 8);
+                               M_DLD(REG_FTMP1, REG_SP, s1);
 
                                if (IS_2_WORD_TYPE(t))
-                                       M_DST(REG_FTMP1, REG_SP, s2 * 8);
+                                       M_DST(REG_FTMP1, REG_SP, s2);
                                else
-                                       M_FST(REG_FTMP1, REG_SP, s2 * 8 + 4);
+                                       M_FST(REG_FTMP1, REG_SP, s2 + 4);
                        }
                }
        }
index 35bffbf9fbcaad981f9aa4312847430afaafb2ab..4a8dc9bf644d62291c48c4309a1f823ba03f66f9 100644 (file)
@@ -71,7 +71,7 @@ s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (src->flags & INMEMORY) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 8;
+               disp = src->vv.regoff;
 
                if (IS_FLT_DBL_TYPE(src->type)) {
                        M_DLD(tempreg, REG_SP, disp);
@@ -107,10 +107,10 @@ void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
                COUNT_SPILLS;
 
                if (IS_FLT_DBL_TYPE(dst->type)) {
-                       M_DST(d, REG_SP, dst->vv.regoff * 8);
+                       M_DST(d, REG_SP, dst->vv.regoff);
                }
                else {
-                       M_LST(d, REG_SP, dst->vv.regoff * 8);
+                       M_LST(d, REG_SP, dst->vv.regoff);
                }
        }
 }
@@ -255,7 +255,7 @@ void emit_verbosecall_enter(jitdata *jd)
                        if (!md->params[p].inmemory) { /* Param in Arg Reg */
                                M_LST(md->params[p].regoff, REG_SP, LA_SIZE + PA_SIZE + 8 + p * 8);
                        } else { /* Param on Stack */
-                               s1 = (md->params[p].regoff + cd->stackframesize) * 8 + stack_size;
+                               s1 = md->params[p].regoff + cd->stackframesize * 8 + stack_size;
                                M_LLD(REG_ITMP2, REG_SP, s1);
                                M_LST(REG_ITMP2, REG_SP, LA_SIZE + PA_SIZE + 8 + p * 8);
                        }
index 424367ec14552d8709d2204c63a5ee26fbb65f17..66755b77f257dd041eb892d0503d26b995399620 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md-abi.c 8099 2007-06-18 18:26:58Z tbfg $
+   $Id: md-abi.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -212,8 +212,8 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->index = -1;
-                               pd->regoff   = stacksize + stackcount;
+                               pd->index = stacksize + stackcount;
+                               pd->regoff   = (stacksize + stackcount) * 8;
                        }
                        break;
                case TYPE_FLT:
@@ -229,8 +229,8 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->index = -1;
-                               pd->regoff   = stacksize + stackcount ;
+                               pd->index = stacksize + stackcount;
+                               pd->regoff   = (stacksize + stackcount) * 8;
                        }
                        break;
                default:
index bf7665c3df5d94037b9d83f16500bc4c03732892..27237d234b8e1df550292b4c491a6edc651df8e4 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 8097 2007-06-17 14:50:16Z pm $
+   $Id: codegen.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -276,24 +276,24 @@ bool codegen_emit(jitdata *jd)
 
                                } else {                             /* reg arg -> spilled    */
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LST(s2, REG_SP, var->vv.regoff * 4);
+                                               M_LST(s2, REG_SP, var->vv.regoff);
                                        else
-                                               M_IST(s2, REG_SP, var->vv.regoff * 4);
+                                               M_IST(s2, REG_SP, var->vv.regoff);
                                }
 
                        } else {                                 /* stack arguments       */
                                if (!IS_INMEMORY(var->flags)) {      /* stack arg -> register */
                                        if (IS_2_WORD_TYPE(t))
-                                               M_LLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_LLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
                                        else
-                                               M_ILD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_ILD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
 
                                } else {                             /* stack arg -> spilled  */
-                                       M_ILD(REG_ITMP1, REG_SP, (cd->stackframesize + s1) * 4);
-                                       M_IST(REG_ITMP1, REG_SP, var->vv.regoff * 4);
+                                       M_ILD(REG_ITMP1, REG_SP, cd->stackframesize * 4 + s1);
+                                       M_IST(REG_ITMP1, REG_SP, var->vv.regoff);
                                        if (IS_2_WORD_TYPE(t)) {
-                                               M_ILD(REG_ITMP1, REG_SP, (cd->stackframesize + s1) * 4 +4);
-                                               M_IST(REG_ITMP1, REG_SP, var->vv.regoff * 4 + 4);
+                                               M_ILD(REG_ITMP1, REG_SP, cd->stackframesize * 4 + s1 + 4);
+                                               M_IST(REG_ITMP1, REG_SP, var->vv.regoff + 4);
                                        }
                                }
                        }
@@ -306,28 +306,28 @@ bool codegen_emit(jitdata *jd)
 
                                } else {                                         /* reg arg -> spilled    */
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DST(s2, REG_SP, var->vv.regoff * 4);
+                                               M_DST(s2, REG_SP, var->vv.regoff);
                                        else
-                                               M_FST(s2, REG_SP, var->vv.regoff * 4);
+                                               M_FST(s2, REG_SP, var->vv.regoff);
                                }
 
                        } else {                                 /* stack arguments       */
                                if (!IS_INMEMORY(var->flags)) {      /* stack-arg -> register */
                                        if (IS_2_WORD_TYPE(t))
-                                               M_DLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_DLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
 
                                        else
-                                               M_FLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 4);
+                                               M_FLD(var->vv.regoff, REG_SP, cd->stackframesize * 4 + s1);
 
                                } else {                             /* stack-arg -> spilled  */
                                        if (IS_2_WORD_TYPE(t)) {
-                                               M_DLD(REG_FTMP1, REG_SP, (cd->stackframesize + s1) * 4);
-                                               M_DST(REG_FTMP1, REG_SP, var->vv.regoff * 4);
-                                               var->vv.regoff = cd->stackframesize + s1;
+                                               M_DLD(REG_FTMP1, REG_SP, cd->stackframesize * 4 + s1);
+                                               M_DST(REG_FTMP1, REG_SP, var->vv.regoff);
+                                               var->vv.regoff = cd->stackframesize * 4 + s1;
 
                                        } else {
-                                               M_FLD(REG_FTMP1, REG_SP, (cd->stackframesize + s1) * 4);
-                                               M_FST(REG_FTMP1, REG_SP, var->vv.regoff * 4);
+                                               M_FLD(REG_FTMP1, REG_SP, cd->stackframesize * 4 + s1);
+                                               M_FST(REG_FTMP1, REG_SP, var->vv.regoff);
                                        }
                                }
                        }
@@ -2741,11 +2741,11 @@ gen_method:
                                        else {
                                                if (IS_2_WORD_TYPE(var->type)) {
                                                        d = emit_load(jd, iptr, var, REG_ITMP12_PACKED);
-                                                       M_LST(d, REG_SP, md->params[s3].regoff * 4);
+                                                       M_LST(d, REG_SP, md->params[s3].regoff);
                                                }
                                                else {
                                                        d = emit_load(jd, iptr, var, REG_ITMP1);
-                                                       M_IST(d, REG_SP, md->params[s3].regoff * 4);
+                                                       M_IST(d, REG_SP, md->params[s3].regoff);
                                                }
                                        }
                                }
@@ -2758,9 +2758,9 @@ gen_method:
                                        else {
                                                d = emit_load(jd, iptr, var, REG_FTMP1);
                                                if (IS_2_WORD_TYPE(var->type))
-                                                       M_DST(d, REG_SP, md->params[s3].regoff * 4);
+                                                       M_DST(d, REG_SP, md->params[s3].regoff);
                                                else
-                                                       M_FST(d, REG_SP, md->params[s3].regoff * 4);
+                                                       M_FST(d, REG_SP, md->params[s3].regoff);
                                        }
                                }
                        }
@@ -3616,24 +3616,24 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                                N_STM(
                                                        GET_HIGH_REG(s1), 
                                                        GET_LOW_REG(s1), 
-                                                       96 + (s2 * 4), REG_SP
+                                                       96 + s2, REG_SP
                                                );
                                        } else {
                                                N_ST(
                                                        s1, 
-                                                       96 + (s2 * 4), RN, REG_SP
+                                                       96 + s2, RN, REG_SP
                                                );
                                        }
                                }
 
                        } else {
-                               s1 = cd->stackframesize + md->params[i].regoff;
+                               s1 = cd->stackframesize * 4 + md->params[i].regoff;
                                s2 = nmd->params[j].regoff;
                                
                                if (IS_2_WORD_TYPE(t)) {
-                                       N_MVC(96 + (s2 * 4), 8, REG_SP, (s1 * 4), REG_SP);
+                                       N_MVC(96 + s2, 8, REG_SP, s1, REG_SP);
                                } else {
-                                       N_MVC(96 + (s2 * 4), 4, REG_SP, (s1 * 4), REG_SP);
+                                       N_MVC(96 + s2, 4, REG_SP, s1, REG_SP);
                                }
                        }
 
@@ -3642,13 +3642,13 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                        /* registers keep unchanged.                                      */
 
                        if (md->params[i].inmemory) {
-                               s1 = cd->stackframesize + md->params[i].regoff;
+                               s1 = cd->stackframesize * 4 + md->params[i].regoff;
                                s2 = nmd->params[j].regoff;
 
                                if (IS_2_WORD_TYPE(t)) {
-                                       N_MVC(96 + (s2 * 4), 8, REG_SP, (s1 * 4), REG_SP);
+                                       N_MVC(96 + s2, 8, REG_SP, s1, REG_SP);
                                } else {
-                                       N_MVC(96 + (s2 * 4), 4, REG_SP, (s1 * 4), REG_SP);
+                                       N_MVC(96 + s2, 4, REG_SP, s1, REG_SP);
                                }
                        }
                }
index f188f33eeded9a697a1347ee51f4245cf50f1208..79660a8c5c8f4838c6c8fba2ed998afc44e3f6ee 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: emit.c 8096 2007-06-17 13:45:58Z pm $
+   $Id: emit.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -75,7 +75,7 @@ __PORTED__ s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
                if (IS_FLT_DBL_TYPE(src->type)) {
                        if (IS_2_WORD_TYPE(src->type))
@@ -121,15 +121,15 @@ __PORTED__ inline void emit_store(jitdata *jd, instruction *iptr, varinfo *dst,
 
                if (IS_FLT_DBL_TYPE(dst->type)) {
                        if (IS_2_WORD_TYPE(dst->type))
-                               M_DST(d, REG_SP, dst->vv.regoff * 4);
+                               M_DST(d, REG_SP, dst->vv.regoff);
                        else
-                               M_FST(d, REG_SP, dst->vv.regoff * 4);
+                               M_FST(d, REG_SP, dst->vv.regoff);
                }
                else {
                        if (IS_2_WORD_TYPE(dst->type))
-                               M_LST(d, REG_SP, dst->vv.regoff * 4);
+                               M_LST(d, REG_SP, dst->vv.regoff);
                        else
-                               M_IST(d, REG_SP, dst->vv.regoff * 4);
+                               M_IST(d, REG_SP, dst->vv.regoff);
                }
        }
 }
@@ -680,7 +680,7 @@ __PORTED__ s4 emit_load_high(jitdata *jd, instruction *iptr, varinfo *src, s4 te
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
                M_ILD(tempreg, REG_SP, disp);
 
@@ -713,7 +713,7 @@ __PORTED__ s4 emit_load_low(jitdata *jd, instruction *iptr, varinfo *src, s4 tem
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 4;
+               disp = src->vv.regoff;
 
                M_ILD(tempreg, REG_SP, disp + 4);
 
index 60bb4ce6dd8711a7d1f7b20ef7f0679e1e404be0..71627d623b9139cc7320bbac91748c6d1b112445 100644 (file)
@@ -28,7 +28,7 @@
 
    Changes:
 
-   $Id: md-abi.c 7839 2007-04-29 22:46:56Z pm $
+   $Id: md-abi.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -146,7 +146,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory  = true;
-                               pd->regoff    = stacksize;
+                               pd->regoff    = stacksize * 4;
                                stacksize++;
                        }
                        break;
@@ -163,7 +163,7 @@ void md_param_alloc(methoddesc *md)
                        else {
                                /* _ALIGN(stacksize); */
                                pd->inmemory  = true;
-                               pd->regoff    = stacksize;
+                               pd->regoff    = stacksize * 4;
                                iarg          = INT_ARG_CNT;
                                stacksize    += 2;
                        }
@@ -177,7 +177,7 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory  = true;
-                               pd->regoff    = stacksize;
+                               pd->regoff    = stacksize * 4;
                                stacksize++;
                        }
                        break;
@@ -191,7 +191,7 @@ void md_param_alloc(methoddesc *md)
                        else {
                                /* _ALIGN(stacksize); */
                                pd->inmemory  = true;
-                               pd->regoff    = stacksize;
+                               pd->regoff    = stacksize * 4;
                                stacksize    += 2;
                        }
                        break;
index ce53e72005993421c585d54213c1d0c3191664f2..08f7e426c332c1d4b385789f6f95736f0d525a58 100644 (file)
@@ -334,16 +334,16 @@ bool codegen_emit(jitdata *jd)
 
                                } 
                                else {                             /* reg arg -> spilled    */
-                                       M_STX(s1, REG_SP, JITSTACK + (var->vv.regoff * 8));
+                                       M_STX(s1, REG_SP, JITSTACK + var->vv.regoff);
                                }
 
                        } else {                                 /* stack arguments       */
                                if (!(var->flags & INMEMORY)) {      /* stack arg -> register */
-                                       M_LDX(var->vv.regoff, REG_FP, JITSTACK + (s1 * 8));
+                                       M_LDX(var->vv.regoff, REG_FP, JITSTACK + s1);
 
                                } else {                             /* stack arg -> spilled  */
                                        /* add the callers window save registers */
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 8 + s1;
                                }
                        }
                
@@ -353,15 +353,15 @@ bool codegen_emit(jitdata *jd)
                                        M_FLTMOVE(s1, var->vv.regoff);
 
                                } else {                                         /* reg arg -> spilled    */
-                                       M_DST(s1, REG_SP, JITSTACK + (var->vv.regoff) * 8);
+                                       M_DST(s1, REG_SP, JITSTACK + var->vv.regoff);
                                }
 
                        } else {                                 /* stack arguments       */
                                if (!(var->flags & INMEMORY)) {      /* stack-arg -> register */
-                                       M_DLD(var->vv.regoff, REG_FP, JITSTACK + (s1 * 8));
+                                       M_DLD(var->vv.regoff, REG_FP, JITSTACK + s1);
 
                                } else {                             /* stack-arg -> spilled  */
-                                       var->vv.regoff = cd->stackframesize + s1;
+                                       var->vv.regoff = cd->stackframesize * 8 + s1;
                                }
                        }
                }
@@ -2472,7 +2472,7 @@ gen_method:
                                        } 
                                        else {
                                                s1 = emit_load(jd, iptr, var, REG_ITMP1);
-                                               M_STX(s1, REG_SP, JITSTACK + d * 8);
+                                               M_STX(s1, REG_SP, JITSTACK + d);
                                        }
                                }
                                else {
@@ -2490,7 +2490,7 @@ gen_method:
                                        }
                                        else {
                                                s1 = emit_load(jd, iptr, var, REG_FTMP1);
-                                               M_DST(s1, REG_SP, JITSTACK + d * 8);
+                                               M_DST(s1, REG_SP, JITSTACK + d);
                                        }
                                }
                        }
@@ -3167,8 +3167,8 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                        s2 = nat_argintregs[nmd->params[j].regoff];
                                        M_INTMOVE(s1, s2);
                                } else {
-                                       s2 = nmd->params[j].regoff - 6;
-                                       M_AST(s1, REG_SP, CSTACK + s2 * 8);
+                                       s2 = nmd->params[j].regoff - 6 * 8;
+                                       M_AST(s1, REG_SP, CSTACK + s2);
                                }
 
                        } else {
@@ -3181,10 +3181,10 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                        assert(false); /* path never taken */
                                }
 
-                               s1 = md->params[i].regoff + cd->stackframesize;
-                               s2 = nmd->params[j].regoff - 6;
-                               M_ALD(REG_ITMP1, REG_SP, CSTACK + s1 * 8);
-                               M_AST(REG_ITMP1, REG_SP, CSTACK + s2 * 8);
+                               s1 = md->params[i].regoff + cd->stackframesize * 8;
+                               s2 = nmd->params[j].regoff - 6 * 8;
+                               M_ALD(REG_ITMP1, REG_SP, CSTACK + s1);
+                               M_AST(REG_ITMP1, REG_SP, CSTACK + s2);
                        }
 
                } else {
@@ -3216,25 +3216,25 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
 
                        } 
                        else {
-                               s1 = md->params[i].regoff + cd->stackframesize;
+                               s1 = md->params[i].regoff + cd->stackframesize * 8;
 
                                if (!nmd->params[j].inmemory) {
 
                                        /* JIT stack -> NAT reg */
 
                                        s2 = nmd->params[j].regoff; 
-                                       M_DLD(s2, REG_SP, CSTACK + s1 * 8);
+                                       M_DLD(s2, REG_SP, CSTACK + s1);
                                }
                                else {
 
                                        /* JIT stack -> NAT stack */
 
-                                       s2 = nmd->params[j].regoff - 6;
+                                       s2 = nmd->params[j].regoff - 6 * 8;
 
                                        /* The FTMP register may already be loaded with args */
                                        /* we know $f0 is unused because of the env pointer  */
-                                       M_DLD(REG_F0, REG_SP, CSTACK + s1 * 8);
-                                       M_DST(REG_F0, REG_SP, CSTACK + s2 * 8);
+                                       M_DLD(REG_F0, REG_SP, CSTACK + s1);
+                                       M_DST(REG_F0, REG_SP, CSTACK + s2);
                                }
                        }
                }
index 0ba642f8525ed580f3658e3d6ce8d765b134c51c..7eaa9df98a8dcb18b1ef70a12e9dc9833cffe34c 100644 (file)
@@ -75,7 +75,7 @@ s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (src->flags & INMEMORY) {
                COUNT_READ_SPILLS(src)
 
-               disp = JITSTACK + src->vv.regoff * 8;
+               disp = JITSTACK + src->vv.regoff;
 
                switch(src->type)
                {
@@ -120,7 +120,7 @@ void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
        if (dst->flags & INMEMORY) {
                COUNT_WRITE_SPILLS(dst)
 
-               disp = JITSTACK + dst->vv.regoff * 8;                   
+               disp = JITSTACK + dst->vv.regoff;
                        
                switch(dst->type)
                {
index 5c2e446f09e7a1e9b50a0b356cdb9e05835ac062..3c56b6f942b8a47dde557a3c35ea747141ffee70 100644 (file)
@@ -173,8 +173,8 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->index = -1;
-                               pd->regoff = stacksize;
+                               pd->index = stacksize;
+                               pd->regoff = stacksize * 8;
                                stacksize++;
                        }
                        break;
@@ -190,8 +190,8 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->index = -1;
-                               pd->regoff = stacksize;
+                               pd->index = stacksize;
+                               pd->regoff = stacksize * 8;
                                stacksize++;
                        }
                        break;
index 772b45ba8e576647054b955ea0ed81ce506e00ab..55c434a7e6300bb520e95d4a5a9b5eb4a4b6efdf 100644 (file)
 
 /* applies when the caller's window was saved */
 #define REG_WINDOW_TRANSPOSE(reg) \
-       (reg + 16)
+       (reg + 16 * 8)
 
 #endif /* _MD_ABI_H */
 
index 49932d5db0fada765d5b63f60e43aa8ff0b8013d..0f460a7c2706ed9b6901cdcd2a15ad6155deb37a 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 7866 2007-05-03 22:32:11Z twisti $
+   $Id: codegen.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -234,14 +234,14 @@ bool codegen_emit(jitdata *jd)
                                if (!IS_INMEMORY(var->flags))
                                        M_INTMOVE(s1, var->vv.regoff);
                                else
-                                   M_LST(s1, REG_SP, var->vv.regoff * 8);
+                                   M_LST(s1, REG_SP, var->vv.regoff);
                        }
                        else {                                 /* stack arguments       */
                                if (!IS_INMEMORY(var->flags))
                                        /* + 8 for return address */
-                                       M_LLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8 + 8);
+                                       M_LLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1 + 8);
                                else
-                                       var->vv.regoff = cd->stackframesize + s1 + 1;
+                                       var->vv.regoff = cd->stackframesize * 8 + s1 + 8;
                        }
                }
                else {                                     /* floating args         */
@@ -249,13 +249,13 @@ bool codegen_emit(jitdata *jd)
                                if (!IS_INMEMORY(var->flags))
                                        M_FLTMOVE(s1, var->vv.regoff);
                                else
-                                       M_DST(s1, REG_SP, var->vv.regoff * 8);
+                                       M_DST(s1, REG_SP, var->vv.regoff);
                        }
                        else {                                 /* stack arguments       */
                                if (!IS_INMEMORY(var->flags))
-                                       M_DLD(var->vv.regoff, REG_SP, (cd->stackframesize + s1) * 8 + 8);
+                                       M_DLD(var->vv.regoff, REG_SP, cd->stackframesize * 8 + s1 + 8);
                                else
-                                       var->vv.regoff = cd->stackframesize + s1 + 1;
+                                       var->vv.regoff = cd->stackframesize * 8 + s1 + 8;
                        }
                }
        }
@@ -2392,7 +2392,7 @@ gen_method:
                                        }
                                        else {
                                                s1 = emit_load(jd, iptr, var, REG_ITMP1);
-                                               M_LST(s1, REG_SP, d * 8);
+                                               M_LST(s1, REG_SP, d);
                                        }
                                }
                                else {
@@ -2404,9 +2404,9 @@ gen_method:
                                                s1 = emit_load(jd, iptr, var, REG_FTMP1);
 
                                                if (IS_2_WORD_TYPE(var->type))
-                                                       M_DST(s1, REG_SP, d * 8);
+                                                       M_DST(s1, REG_SP, d);
                                                else
-                                                       M_FST(s1, REG_SP, d * 8);
+                                                       M_FST(s1, REG_SP, d);
                                        }
                                }
                        }
@@ -3064,12 +3064,12 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                if (!nmd->params[j].inmemory)
                                        M_INTMOVE(s1, s2);
                                else
-                                       M_LST(s1, REG_SP, s2 * 8);
+                                       M_LST(s1, REG_SP, s2);
                        }
                        else {
-                               s1 = md->params[i].regoff + cd->stackframesize + 1;/* +1 (RA) */
-                               M_LLD(REG_ITMP1, REG_SP, s1 * 8);
-                               M_LST(REG_ITMP1, REG_SP, s2 * 8);
+                               s1 = md->params[i].regoff + cd->stackframesize * 8 + 8;/* +1 (RA) */
+                               M_LLD(REG_ITMP1, REG_SP, s1);
+                               M_LST(REG_ITMP1, REG_SP, s2);
                        }
                }
                else {
@@ -3077,15 +3077,15 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                           argument registers keep unchanged. */
 
                        if (md->params[i].inmemory) {
-                               s1 = md->params[i].regoff + cd->stackframesize + 1;/* +1 (RA) */
+                               s1 = md->params[i].regoff + cd->stackframesize * 8 + 8;/* +1 (RA) */
 
                                if (IS_2_WORD_TYPE(t)) {
-                                       M_DLD(REG_FTMP1, REG_SP, s1 * 8);
-                                       M_DST(REG_FTMP1, REG_SP, s2 * 8);
+                                       M_DLD(REG_FTMP1, REG_SP, s1);
+                                       M_DST(REG_FTMP1, REG_SP, s2);
                                }
                                else {
-                                       M_FLD(REG_FTMP1, REG_SP, s1 * 8);
-                                       M_FST(REG_FTMP1, REG_SP, s2 * 8);
+                                       M_FLD(REG_FTMP1, REG_SP, s1);
+                                       M_FST(REG_FTMP1, REG_SP, s2);
                                }
                        }
                }
index f7bfc5f9006f7b447884c5cb14c412f27d482a4a..66abac808f6651c36cdd08cb8a6c75ecc731c978 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: emit.c 7813 2007-04-25 19:20:13Z twisti $
+   $Id: emit.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -74,7 +74,7 @@ s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
        if (IS_INMEMORY(src->flags)) {
                COUNT_SPILLS;
 
-               disp = src->vv.regoff * 8;
+               disp = src->vv.regoff;
 
                switch (src->type) {
                case TYPE_INT:
@@ -151,7 +151,7 @@ inline void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
        if (IS_INMEMORY(dst->flags)) {
                COUNT_SPILLS;
 
-               disp = dst->vv.regoff * 8;
+               disp = dst->vv.regoff;
 
                switch (dst->type) {
                case TYPE_INT:
@@ -815,53 +815,53 @@ void emit_ishift(jitdata *jd, s4 shift_op, instruction *iptr)
        if (IS_INMEMORY(v_dst->flags)) {
                if (IS_INMEMORY(v_s2->flags) && IS_INMEMORY(v_s1->flags)) {
                        if (s1 == d) {
-                               M_ILD(RCX, REG_SP, s2 * 8);
-                               emit_shiftl_membase(cd, shift_op, REG_SP, d * 8);
+                               M_ILD(RCX, REG_SP, s2);
+                               emit_shiftl_membase(cd, shift_op, REG_SP, d);
 
                        } else {
-                               M_ILD(RCX, REG_SP, s2 * 8);
-                               M_ILD(REG_ITMP2, REG_SP, s1 * 8);
+                               M_ILD(RCX, REG_SP, s2);
+                               M_ILD(REG_ITMP2, REG_SP, s1);
                                emit_shiftl_reg(cd, shift_op, REG_ITMP2);
-                               M_IST(REG_ITMP2, REG_SP, d * 8);
+                               M_IST(REG_ITMP2, REG_SP, d);
                        }
 
                } else if (IS_INMEMORY(v_s2->flags) && !IS_INMEMORY(v_s1->flags)) {
                        /* s1 may be equal to RCX */
                        if (s1 == RCX) {
                                if (s2 == d) {
-                                       M_ILD(REG_ITMP1, REG_SP, s2 * 8);
-                                       M_IST(s1, REG_SP, d * 8);
+                                       M_ILD(REG_ITMP1, REG_SP, s2);
+                                       M_IST(s1, REG_SP, d);
                                        M_INTMOVE(REG_ITMP1, RCX);
 
                                } else {
-                                       M_IST(s1, REG_SP, d * 8);
-                                       M_ILD(RCX, REG_SP, s2 * 8);
+                                       M_IST(s1, REG_SP, d);
+                                       M_ILD(RCX, REG_SP, s2);
                                }
 
                        } else {
-                               M_ILD(RCX, REG_SP, s2 * 8);
-                               M_IST(s1, REG_SP, d * 8);
+                               M_ILD(RCX, REG_SP, s2);
+                               M_IST(s1, REG_SP, d);
                        }
 
-                       emit_shiftl_membase(cd, shift_op, REG_SP, d * 8);
+                       emit_shiftl_membase(cd, shift_op, REG_SP, d);
 
                } else if (!IS_INMEMORY(v_s2->flags) && IS_INMEMORY(v_s1->flags)) {
                        if (s1 == d) {
                                M_INTMOVE(s2, RCX);
-                               emit_shiftl_membase(cd, shift_op, REG_SP, d * 8);
+                               emit_shiftl_membase(cd, shift_op, REG_SP, d);
 
                        } else {
                                M_INTMOVE(s2, RCX);
-                               M_ILD(REG_ITMP2, REG_SP, s1 * 8);
+                               M_ILD(REG_ITMP2, REG_SP, s1);
                                emit_shiftl_reg(cd, shift_op, REG_ITMP2);
-                               M_IST(REG_ITMP2, REG_SP, d * 8);
+                               M_IST(REG_ITMP2, REG_SP, d);
                        }
 
                } else {
                        /* s1 may be equal to RCX */
-                       M_IST(s1, REG_SP, d * 8);
+                       M_IST(s1, REG_SP, d);
                        M_INTMOVE(s2, RCX);
-                       emit_shiftl_membase(cd, shift_op, REG_SP, d * 8);
+                       emit_shiftl_membase(cd, shift_op, REG_SP, d);
                }
 
                M_INTMOVE(REG_ITMP1, RCX);                             /* restore RCX */
@@ -873,19 +873,19 @@ void emit_ishift(jitdata *jd, s4 shift_op, instruction *iptr)
                }
                                        
                if (IS_INMEMORY(v_s2->flags) && IS_INMEMORY(v_s1->flags)) {
-                       M_ILD(RCX, REG_SP, s2 * 8);
-                       M_ILD(d, REG_SP, s1 * 8);
+                       M_ILD(RCX, REG_SP, s2);
+                       M_ILD(d, REG_SP, s1);
                        emit_shiftl_reg(cd, shift_op, d);
 
                } else if (IS_INMEMORY(v_s2->flags) && !IS_INMEMORY(v_s1->flags)) {
                        /* s1 may be equal to RCX */
                        M_INTMOVE(s1, d);
-                       M_ILD(RCX, REG_SP, s2 * 8);
+                       M_ILD(RCX, REG_SP, s2);
                        emit_shiftl_reg(cd, shift_op, d);
 
                } else if (!IS_INMEMORY(v_s2->flags) && IS_INMEMORY(v_s1->flags)) {
                        M_INTMOVE(s2, RCX);
-                       M_ILD(d, REG_SP, s1 * 8);
+                       M_ILD(d, REG_SP, s1);
                        emit_shiftl_reg(cd, shift_op, d);
 
                } else {
@@ -942,53 +942,53 @@ void emit_lshift(jitdata *jd, s4 shift_op, instruction *iptr)
        if (IS_INMEMORY(v_dst->flags)) {
                if (IS_INMEMORY(v_s2->flags) && IS_INMEMORY(v_s1->flags)) {
                        if (s1 == d) {
-                               M_ILD(RCX, REG_SP, s2 * 8);
-                               emit_shift_membase(cd, shift_op, REG_SP, d * 8);
+                               M_ILD(RCX, REG_SP, s2);
+                               emit_shift_membase(cd, shift_op, REG_SP, d);
 
                        } else {
-                               M_ILD(RCX, REG_SP, s2 * 8);
-                               M_LLD(REG_ITMP2, REG_SP, s1 * 8);
+                               M_ILD(RCX, REG_SP, s2);
+                               M_LLD(REG_ITMP2, REG_SP, s1);
                                emit_shift_reg(cd, shift_op, REG_ITMP2);
-                               M_LST(REG_ITMP2, REG_SP, d * 8);
+                               M_LST(REG_ITMP2, REG_SP, d);
                        }
 
                } else if (IS_INMEMORY(v_s2->flags) && !IS_INMEMORY(v_s1->flags)) {
                        /* s1 may be equal to RCX */
                        if (s1 == RCX) {
                                if (s2 == d) {
-                                       M_ILD(REG_ITMP1, REG_SP, s2 * 8);
-                                       M_LST(s1, REG_SP, d * 8);
+                                       M_ILD(REG_ITMP1, REG_SP, s2);
+                                       M_LST(s1, REG_SP, d);
                                        M_INTMOVE(REG_ITMP1, RCX);
 
                                } else {
-                                       M_LST(s1, REG_SP, d * 8);
-                                       M_ILD(RCX, REG_SP, s2 * 8);
+                                       M_LST(s1, REG_SP, d);
+                                       M_ILD(RCX, REG_SP, s2);
                                }
 
                        } else {
-                               M_ILD(RCX, REG_SP, s2 * 8);
-                               M_LST(s1, REG_SP, d * 8);
+                               M_ILD(RCX, REG_SP, s2);
+                               M_LST(s1, REG_SP, d);
                        }
 
-                       emit_shift_membase(cd, shift_op, REG_SP, d * 8);
+                       emit_shift_membase(cd, shift_op, REG_SP, d);
 
                } else if (!IS_INMEMORY(v_s2->flags) && IS_INMEMORY(v_s1->flags)) {
                        if (s1 == d) {
                                M_INTMOVE(s2, RCX);
-                               emit_shift_membase(cd, shift_op, REG_SP, d * 8);
+                               emit_shift_membase(cd, shift_op, REG_SP, d);
 
                        } else {
                                M_INTMOVE(s2, RCX);
-                               M_LLD(REG_ITMP2, REG_SP, s1 * 8);
+                               M_LLD(REG_ITMP2, REG_SP, s1);
                                emit_shift_reg(cd, shift_op, REG_ITMP2);
-                               M_LST(REG_ITMP2, REG_SP, d * 8);
+                               M_LST(REG_ITMP2, REG_SP, d);
                        }
 
                } else {
                        /* s1 may be equal to RCX */
-                       M_LST(s1, REG_SP, d * 8);
+                       M_LST(s1, REG_SP, d);
                        M_INTMOVE(s2, RCX);
-                       emit_shift_membase(cd, shift_op, REG_SP, d * 8);
+                       emit_shift_membase(cd, shift_op, REG_SP, d);
                }
 
                M_INTMOVE(REG_ITMP1, RCX);                             /* restore RCX */
@@ -1000,19 +1000,19 @@ void emit_lshift(jitdata *jd, s4 shift_op, instruction *iptr)
                }
 
                if (IS_INMEMORY(v_s2->flags) && IS_INMEMORY(v_s1->flags)) {
-                       M_ILD(RCX, REG_SP, s2 * 8);
-                       M_LLD(d, REG_SP, s1 * 8);
+                       M_ILD(RCX, REG_SP, s2);
+                       M_LLD(d, REG_SP, s1);
                        emit_shift_reg(cd, shift_op, d);
 
                } else if (IS_INMEMORY(v_s2->flags) && !IS_INMEMORY(v_s1->flags)) {
                        /* s1 may be equal to RCX */
                        M_INTMOVE(s1, d);
-                       M_ILD(RCX, REG_SP, s2 * 8);
+                       M_ILD(RCX, REG_SP, s2);
                        emit_shift_reg(cd, shift_op, d);
 
                } else if (!IS_INMEMORY(v_s2->flags) && IS_INMEMORY(v_s1->flags)) {
                        M_INTMOVE(s2, RCX);
-                       M_LLD(d, REG_SP, s1 * 8);
+                       M_LLD(d, REG_SP, s1);
                        emit_shift_reg(cd, shift_op, d);
 
                } else {
index 1e343cbd18f7e4f1c5bff3426317e253027197ed..720971fcb91a70229dfeedbf99f1b11a426923f2 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md-abi.c 8080 2007-06-14 11:12:11Z twisti $
+   $Id: md-abi.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -153,8 +153,8 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->index    = -1;
-                               pd->regoff   = stacksize;
+                               pd->index    = stacksize;
+                               pd->regoff   = stacksize * 8;
                                stacksize++;
                        }
                        break;
@@ -169,8 +169,8 @@ void md_param_alloc(methoddesc *md)
                        }
                        else {
                                pd->inmemory = true;
-                               pd->index    = -1;
-                               pd->regoff   = stacksize;
+                               pd->index    = stacksize;
+                               pd->regoff   = stacksize * 8;
                                stacksize++;
                        }
                        break;
index 878fe35335578f56d804e7e0093b093d3e6144b8..43962a658778f96e6ba1798299c3b88c2f48c99a 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: vm.c 8112 2007-06-20 17:54:36Z twisti $
+   $Id: vm.c 8115 2007-06-20 19:14:05Z michi $
 
 */
 
@@ -2333,7 +2333,7 @@ static void vm_array_store_int(uint64_t *array, paramdesc *pd, int32_t value)
                array[index] = (int64_t) value;
        }
        else {
-               index        = ARG_CNT + pd->regoff;
+               index        = ARG_CNT + pd->index;
 #if SIZEOF_VOID_P == 8
                array[index] = (int64_t) value;
 #else
@@ -2362,7 +2362,7 @@ static void vm_array_store_lng(uint64_t *array, paramdesc *pd, int64_t value)
        if (!pd->inmemory)
                index = pd->index;
        else
-               index = ARG_CNT + pd->regoff;
+               index = ARG_CNT + pd->index;
 
        array[index] = value;
 #else
@@ -2376,7 +2376,7 @@ static void vm_array_store_lng(uint64_t *array, paramdesc *pd, int64_t value)
                array[index] = value >> 32;
        }
        else {
-               index        = ARG_CNT + pd->regoff;
+               index        = ARG_CNT + pd->index;
                array[index] = value;
        }
 #endif
@@ -2403,7 +2403,7 @@ static void vm_array_store_flt(uint64_t *array, paramdesc *pd, uint64_t value)
 #endif
        }
        else {
-               index        = ARG_CNT + pd->regoff;
+               index        = ARG_CNT + pd->index;
 #if defined(__SPARC_64__)
                array[index] = value >> 32;
 #else
@@ -2427,7 +2427,7 @@ static void vm_array_store_dbl(uint64_t *array, paramdesc *pd, uint64_t value)
        if (!pd->inmemory)
                index = INT_ARG_CNT + pd->index;
        else
-               index = ARG_CNT + pd->regoff;
+               index = ARG_CNT + pd->index;
 
        array[index] = value;
 }
@@ -2456,7 +2456,7 @@ static void vm_array_store_adr(uint64_t *array, paramdesc *pd, void *value)
                array[index] = (uint64_t) (intptr_t) value;
        }
        else {
-               index        = ARG_CNT + pd->regoff;
+               index        = ARG_CNT + pd->index;
 #if SIZEOF_VOID_P == 8
                array[index] = (uint64_t) (intptr_t) value;
 #else