diff options
author | Ludovic Courtès <ludo@gnu.org> | 2010-05-07 15:59:50 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2010-05-07 15:59:50 +0200 |
commit | b79ba0b01e7dc89d2ba8da2c5cf4e200f4bb5de1 (patch) | |
tree | dcb4fc233724821679cfc4363e0139a63fc84767 /libguile/vm.c | |
parent | 36b5e394072c94b062a69a6d77b418e16ce70fce (diff) | |
download | guile-b79ba0b01e7dc89d2ba8da2c5cf4e200f4bb5de1.tar.gz |
Attempt to guarantee 8-byte alignment of on-stack frame objects.
* libguile/vm.c (vm_dispatch_hook): Make FRAME a union with a `double'
member.
Diffstat (limited to 'libguile/vm.c')
-rw-r--r-- | libguile/vm.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libguile/vm.c b/libguile/vm.c index 4f766cbeb..1f3e1f85b 100644 --- a/libguile/vm.c +++ b/libguile/vm.c @@ -186,7 +186,11 @@ vm_dispatch_hook (SCM vm, int hook_num) struct scm_vm *vp; SCM hook; struct scm_frame c_frame; - scm_t_cell frame; + union + { + double alignment; + scm_t_cell cell; + } frame; SCM args[1]; vp = SCM_VM_DATA (vm); @@ -211,8 +215,8 @@ vm_dispatch_hook (SCM vm, int hook_num) c_frame.sp = vp->sp; c_frame.ip = vp->ip; c_frame.offset = 0; - frame.word_0 = SCM_PACK (scm_tc7_frame); - frame.word_1 = PTR2SCM (&c_frame); + frame.cell.word_0 = SCM_PACK (scm_tc7_frame); + frame.cell.word_1 = PTR2SCM (&c_frame); args[0] = PTR2SCM (&frame); scm_c_run_hookn (hook, args, 1); |