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.
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 $
*/
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)
#define NEW_MEM_SLOT(r) \
do { \
- (r) = rd->memuse; \
+ (r) = rd->memuse * SIZE_OF_STACKSLOT; \
rd->memuse += memneeded + 1; \
} while (0)
do { \
if ( (memneeded) && (rd->memuse & 1)) \
rd->memuse++; \
- (r) = rd->memuse; \
+ (r) = rd->memuse * SIZE_OF_STACKSLOT; \
rd->memuse += memneeded + 1; \
} while (0)
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)
}
else {
flags |= INMEMORY;
- regoff = rd->memuse++;
+ regoff = rd->memuse++ * SIZE_OF_STACKSLOT;
}
}
else /* !IS_ADR_TYPE */
}
else {
flags |= INMEMORY;
- regoff = rd->memuse++;
+ regoff = rd->memuse++ * SIZE_OF_STACKSLOT;
}
}
else
}
else {
v->flags |= INMEMORY;
- v->vv.regoff = rd->memuse++;
+ v->vv.regoff = rd->memuse++ * SIZE_OF_STACKSLOT;
}
}
else {
}
else {
v->flags = INMEMORY;
- v->vv.regoff = rd->memuse++;
+ v->vv.regoff = rd->memuse++ * SIZE_OF_STACKSLOT;
}
}
else {
/* 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;
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 $
*/
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 */
}
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;
}
}
}
}
else {
s1 = emit_load(jd, iptr, var, REG_ITMP1);
- M_LST(s1, REG_SP, d * 8);
+ M_LST(s1, REG_SP, d);
}
}
else {
}
else {
s1 = emit_load(jd, iptr, var, REG_FTMP1);
- M_DST(s1, REG_SP, d * 8);
+ M_DST(s1, REG_SP, d);
}
}
}
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 {
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);
}
}
}
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 $
*/
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 8;
+ disp = src->vv.regoff;
switch (src->type) {
case TYPE_INT:
if (IS_INMEMORY(dst->flags)) {
COUNT_SPILLS;
- disp = dst->vv.regoff * 8;
+ disp = dst->vv.regoff;
switch (dst->type) {
case TYPE_INT:
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 $
*/
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
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 $
*/
}
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)
}
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;
}
}
}
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)
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) */
}
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);
}
}
}
if (src->flags & INMEMORY) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
#if defined(ENABLE_SOFTFLOAT)
switch (src->type) {
if (src->flags & INMEMORY) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
#if defined(__ARMEL__)
M_ILD(tempreg, REG_SP, disp);
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);
if (dst->flags & INMEMORY) {
COUNT_SPILLS;
- disp = dst->vv.regoff * 4;
+ disp = dst->vv.regoff;
#if defined(ENABLE_SOFTFLOAT)
switch (dst->type) {
}
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);
}
}
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 $
*/
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize++;
}
break;
ALIGN_2(stacksize);
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize += 2;
}
break;
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize++;
}
break;
ALIGN_2(stacksize);
#endif
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
reguse = INT_ARG_CNT;
stacksize += 2;
}
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 $
*/
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 */
/* 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 {
/* 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;
}
}
}
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); */
}
/* 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;
}
}
}
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);
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");
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! */
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);
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! */
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);
}
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");
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");
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 */
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;
} 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);
}
}
} 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 */
/* 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
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);
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 $
*/
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
switch (src->type) {
case TYPE_INT:
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
M_ILD(tempreg, REG_SP, disp);
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
M_ILD(tempreg, REG_SP, disp + 4);
if (IS_INMEMORY(dst->flags)) {
COUNT_SPILLS;
- disp = dst->vv.regoff * 4;
+ disp = dst->vv.regoff;
switch (dst->type) {
case TYPE_INT:
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);
}
}
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);
}
}
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 $
*/
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;
}
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;
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;
#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:
/* 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);
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:
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
switch (src->type) {
#if defined(ENABLE_SOFTFLOAT)
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 {
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 {
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;
}
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 $
*/
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))
}
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 */
}
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;
}
}
}
}
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) {
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
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);
}
}
}
}
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
}
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
}
if (src->flags & INMEMORY) {
COUNT_SPILLS;
- disp = src->vv.regoff * 8;
+ disp = src->vv.regoff;
switch (src->type) {
#if SIZEOF_VOID_P == 8
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);
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);
if (dst->flags & INMEMORY) {
COUNT_SPILLS;
- disp = dst->vv.regoff * 8;
+ disp = dst->vv.regoff;
switch (dst->type) {
#if SIZEOF_VOID_P == 8
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 $
*/
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
}
else {
pd->inmemory = true;
- pd->index = -1;
- pd->regoff = stacksize;
+ pd->index = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
}
else {
pd->inmemory = true;
- pd->index = -1;
- pd->regoff = stacksize;
+ pd->index = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
}
else {
pd->inmemory = true;
- pd->index = -1;
- pd->regoff = stacksize;
+ pd->index = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 8;
}
stacksize++;
break;
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 8;
}
stacksize += 2;
break;
ALIGN_2(stacksize);
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
}
stacksize += 2;
}
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
}
stacksize++;
}
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
}
stacksize++;
break;
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
}
stacksize += 2;
break;
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 $
*/
}
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
}
}
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
}
}
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);
}
}
}
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);
}
}
}
}
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 {
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);
}
}
}
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 $
*/
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
}
stacksize++;
break;
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
iarg = INT_ARG_CNT;
}
stacksize += 2;
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
}
stacksize++;
break;
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
}
stacksize += 2;
break;
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 $
*/
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
switch (src->type) {
case TYPE_INT:
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
M_ILD(tempreg, REG_SP, disp + 4);
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
M_ILD(tempreg, REG_SP, disp);
if (IS_INMEMORY(dst->flags)) {
COUNT_SPILLS;
- disp = dst->vv.regoff * 4;
+ disp = dst->vv.regoff;
switch (dst->type) {
case TYPE_INT:
}
}
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);
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 $
*/
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize++;
}
break;
else {
_ALIGN(stacksize);
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
iarg = INT_ARG_CNT;
stacksize += 2;
}
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize++;
}
break;
else {
_ALIGN(stacksize);
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize += 2;
}
break;
iarg++;
} else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize++;
}
break;
} else {
_ALIGN(stacksize);
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
iarg = INT_ARG_CNT;
stacksize += 2;
}
farg++;
} else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize++;
}
break;
} else {
_ALIGN(stacksize);
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize += 2;
}
break;
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 $
*/
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 {
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;
}
}
}
}
else {
s1 = emit_load(jd, iptr, var, REG_ITMP1);
- M_LST(s1, REG_SP, d * 8);
+ M_LST(s1, REG_SP, d);
}
}
else {
}
else {
s1 = emit_load(jd, iptr, var, REG_FTMP1);
- M_DST(s1, REG_SP, d * 8);
+ M_DST(s1, REG_SP, d);
}
}
}
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 {
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);
}
}
}
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);
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);
}
}
}
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);
}
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 $
*/
}
else {
pd->inmemory = true;
- pd->index = -1;
- pd->regoff = stacksize + stackcount;
+ pd->index = stacksize + stackcount;
+ pd->regoff = (stacksize + stackcount) * 8;
}
break;
case TYPE_FLT:
}
else {
pd->inmemory = true;
- pd->index = -1;
- pd->regoff = stacksize + stackcount ;
+ pd->index = stacksize + stackcount;
+ pd->regoff = (stacksize + stackcount) * 8;
}
break;
default:
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 $
*/
} 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);
}
}
}
} 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);
}
}
}
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);
}
}
}
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);
}
}
}
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);
}
}
/* 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);
}
}
}
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 $
*/
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))
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);
}
}
}
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
M_ILD(tempreg, REG_SP, disp);
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 4;
+ disp = src->vv.regoff;
M_ILD(tempreg, REG_SP, disp + 4);
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 $
*/
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize++;
}
break;
else {
/* _ALIGN(stacksize); */
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
iarg = INT_ARG_CNT;
stacksize += 2;
}
}
else {
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize++;
}
break;
else {
/* _ALIGN(stacksize); */
pd->inmemory = true;
- pd->regoff = stacksize;
+ pd->regoff = stacksize * 4;
stacksize += 2;
}
break;
}
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;
}
}
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;
}
}
}
}
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 {
}
else {
s1 = emit_load(jd, iptr, var, REG_FTMP1);
- M_DST(s1, REG_SP, JITSTACK + d * 8);
+ M_DST(s1, REG_SP, JITSTACK + d);
}
}
}
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 {
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 {
}
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);
}
}
}
if (src->flags & INMEMORY) {
COUNT_READ_SPILLS(src)
- disp = JITSTACK + src->vv.regoff * 8;
+ disp = JITSTACK + src->vv.regoff;
switch(src->type)
{
if (dst->flags & INMEMORY) {
COUNT_WRITE_SPILLS(dst)
- disp = JITSTACK + dst->vv.regoff * 8;
+ disp = JITSTACK + dst->vv.regoff;
switch(dst->type)
{
}
else {
pd->inmemory = true;
- pd->index = -1;
- pd->regoff = stacksize;
+ pd->index = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
}
else {
pd->inmemory = true;
- pd->index = -1;
- pd->regoff = stacksize;
+ pd->index = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
/* applies when the caller's window was saved */
#define REG_WINDOW_TRANSPOSE(reg) \
- (reg + 16)
+ (reg + 16 * 8)
#endif /* _MD_ABI_H */
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 $
*/
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 */
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;
}
}
}
}
else {
s1 = emit_load(jd, iptr, var, REG_ITMP1);
- M_LST(s1, REG_SP, d * 8);
+ M_LST(s1, REG_SP, d);
}
}
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);
}
}
}
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 {
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);
}
}
}
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 $
*/
if (IS_INMEMORY(src->flags)) {
COUNT_SPILLS;
- disp = src->vv.regoff * 8;
+ disp = src->vv.regoff;
switch (src->type) {
case TYPE_INT:
if (IS_INMEMORY(dst->flags)) {
COUNT_SPILLS;
- disp = dst->vv.regoff * 8;
+ disp = dst->vv.regoff;
switch (dst->type) {
case TYPE_INT:
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 */
}
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 {
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 */
}
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 {
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 $
*/
}
else {
pd->inmemory = true;
- pd->index = -1;
- pd->regoff = stacksize;
+ pd->index = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
}
else {
pd->inmemory = true;
- pd->index = -1;
- pd->regoff = stacksize;
+ pd->index = stacksize;
+ pd->regoff = stacksize * 8;
stacksize++;
}
break;
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 $
*/
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
if (!pd->inmemory)
index = pd->index;
else
- index = ARG_CNT + pd->regoff;
+ index = ARG_CNT + pd->index;
array[index] = value;
#else
array[index] = value >> 32;
}
else {
- index = ARG_CNT + pd->regoff;
+ index = ARG_CNT + pd->index;
array[index] = value;
}
#endif
#endif
}
else {
- index = ARG_CNT + pd->regoff;
+ index = ARG_CNT + pd->index;
#if defined(__SPARC_64__)
array[index] = value >> 32;
#else
if (!pd->inmemory)
index = INT_ARG_CNT + pd->index;
else
- index = ARG_CNT + pd->regoff;
+ index = ARG_CNT + pd->index;
array[index] = 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