# if STACKFRAME_LEAFMETHODS_RA_REGISTER
if (!code_is_leafmethod(es->code))
# endif
- es->ra = (u1*) (ptrint) basesp[LA_LR_OFFSET / sizeof(stackslot_t)];
+ es->ra = *((uint8_t**) ((intptr_t) basesp + LA_LR_OFFSET));
#endif /* REPLACE_RA_LINKAGE_AREA */
/* restore saved int registers */
for (i=0; i<es->code->savedintcount; ++i) {
while (nregdescint[--reg] != REG_SAV)
;
- es->intregs[reg] = *--basesp;
+ basesp -= 1;
+ es->intregs[reg] = *((uintptr_t*) basesp);
}
/* restore saved flt registers */
while (nregdescfloat[--reg] != REG_SAV)
;
basesp -= STACK_SLOTS_PER_FLOAT;
- es->fltregs[reg] = *(double*)basesp;
+ es->fltregs[reg] = *((double*) basesp);
}
#if defined(HAS_ADDRESS_REGISTER_FILE)
for (i=0; i<es->code->savedadrcount; ++i) {
while (nregdescadr[--reg] != REG_SAV)
;
- es->adrregs[reg] = *--basesp;
+ basesp -= 1;
+ es->adrregs[reg] = *((uintptr_t*) basesp);
}
#endif
# if STACKFRAME_LEAFMETHODS_RA_REGISTER
if (!code_is_leafmethod(calleecode))
# endif
- basesp[LA_LR_OFFSET / sizeof(stackslot_t)] = (ptrint) ra;
+ *((uint8_t**) ((intptr_t) basesp + LA_LR_OFFSET)) = ra;
#endif /* REPLACE_RA_LINKAGE_AREA */
/* save int registers */
for (i=0; i<calleecode->savedintcount; ++i) {
while (nregdescint[--reg] != REG_SAV)
;
- *--basesp = es->intregs[reg];
+ basesp -= 1;
+ *((uintptr_t*) basesp) = es->intregs[reg];
/* XXX may not clobber saved regs used by native code! */
#if !defined(NDEBUG) && 0
while (nregdescfloat[--reg] != REG_SAV)
;
basesp -= STACK_SLOTS_PER_FLOAT;
- *(double*)basesp = es->fltregs[reg];
+ *((double*) basesp) = es->fltregs[reg];
/* XXX may not clobber saved regs used by native code! */
#if !defined(NDEBUG) && 0
for (i=0; i<calleecode->savedadrcount; ++i) {
while (nregdescadr[--reg] != REG_SAV)
;
- *--basesp = es->adrregs[reg];
+ basesp -= 1;
+ *((uintptr_t*) basesp) = es->adrregs[reg];
/* XXX may not clobber saved regs used by native code! */
#if !defined(NDEBUG) && 0
frame->syncslotcount = count;
frame->syncslots = (replace_val_t*) DumpMemory::allocate(sizeof(replace_val_t) * count);
for (i=0; i<count; ++i) {
- frame->syncslots[i].p = sp[es->code->memuse + i]; /* XXX md_ function */
+ frame->syncslots[i].p = *((intptr_t*) (sp + es->code->memuse + i)); /* XXX md_ function */
}
/* pop the stackframe */
count = code_get_sync_slot_count(calleecode);
assert(count == calleeframe->syncslotcount);
for (i=0; i<count; ++i) {
- sp[calleecode->memuse + i] = calleeframe->syncslots[i].p;
+ *((intptr_t*) (sp + calleecode->memuse + i)) = calleeframe->syncslots[i].p;
}
/* redirect future invocations */