summaryrefslogtreecommitdiff
path: root/libguile/vm.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-11-15 17:13:10 +0100
committerAndy Wingo <wingo@pobox.com>2013-11-15 17:13:27 +0100
commitf8085163d6c457e79d3f54934723707260ac8dd8 (patch)
treeedc28ec3fd02c183a92894ab4124831f4f36e80b /libguile/vm.c
parent840ec33422e7ccae5ac158584e5587d88ff42d85 (diff)
downloadguile-f8085163d6c457e79d3f54934723707260ac8dd8.tar.gz
Remove MVRA from VM frames
* libguile/_scm.h (SCM_OBJCODE_MINOR_VERSION): Bump for frame layout change. * libguile/frames.c: Update some static checks. (scm_frame_num_locals, scm_frame_local_ref, scm_frame_local_set_x): Update to not skip over uninitialized frames, as that's not a thing any more. * libguile/frames.h: Update to remove MVRA. Woo! * libguile/vm-engine.c (ALLOC_FRAME, RETURN_ONE_VALUE): (rtl_vm_engine): Update for 3 words per frame instead of 4. * libguile/vm.c (vm_return_to_continuation): Likewise. * module/language/cps/slot-allocation.scm (allocate-slots): 3 words per frame, not 4. * module/system/vm/assembler.scm (*bytecode-minor-version*): Bump. Also remove a couple of tc7's that aren't around any more.
Diffstat (limited to 'libguile/vm.c')
-rw-r--r--libguile/vm.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libguile/vm.c b/libguile/vm.c
index 07500e3ca..9550f81f3 100644
--- a/libguile/vm.c
+++ b/libguile/vm.c
@@ -144,7 +144,7 @@ vm_return_to_continuation (SCM vm, SCM cont, size_t n, SCM *argv)
vp = SCM_VM_DATA (vm);
cp = SCM_VM_CONT_DATA (cont);
- if (vp->stack_size < cp->stack_size + n + 4)
+ if (vp->stack_size < cp->stack_size + n + 3)
scm_misc_error ("vm-engine", "not enough space to reinstate continuation",
scm_list_2 (vm, cont));
@@ -165,7 +165,7 @@ vm_return_to_continuation (SCM vm, SCM cont, size_t n, SCM *argv)
size_t i;
/* Push on an empty frame, as the continuation expects. */
- for (i = 0; i < 4; i++)
+ for (i = 0; i < 3; i++)
{
vp->sp++;
*vp->sp = SCM_BOOL_F;