summaryrefslogtreecommitdiff
path: root/libguile/vm-i-system.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@oblong.net>2010-03-16 15:55:24 +0100
committerAndy Wingo <wingo@oblong.net>2010-03-16 15:55:24 +0100
commitf7cea64566407151de4ff665ec787fca927b908f (patch)
treeb11a9da7bb10a77dbf46f518eb0e1c2ea3fd19e1 /libguile/vm-i-system.c
parentdb5034ab89426edacf5229e7e6b37cb0495cd287 (diff)
downloadguile-f7cea64566407151de4ff665ec787fca927b908f.tar.gz
more vm gc fixen
* libguile/vm-i-system.c (continuation_call): Sync before calling a continuation. Shouldn't much matter, but it seems like a good idea. (wind-fluids): More importantly, sync before allocating a with-fluids object.
Diffstat (limited to 'libguile/vm-i-system.c')
-rw-r--r--libguile/vm-i-system.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c
index e21a9109e..27c6c3374 100644
--- a/libguile/vm-i-system.c
+++ b/libguile/vm-i-system.c
@@ -983,6 +983,7 @@ VM_DEFINE_INSTRUCTION (89, continuation_call, "continuation-call", 0, -1, 0)
SCM contregs;
POP (contregs);
+ SYNC_ALL ();
scm_i_check_continuation (contregs);
vm_return_to_continuation (scm_i_contregs_vm (contregs),
scm_i_contregs_vm_cont (contregs),
@@ -1564,6 +1565,7 @@ VM_DEFINE_INSTRUCTION (90, wind_fluids, "wind-fluids", 1, -1, 0)
if (sp - 2*n < SCM_FRAME_UPPER_ADDRESS (fp))
goto vm_error_stack_underflow;
+ SYNC_REGISTER ();
wf = scm_i_make_with_fluids (n, sp + 1 - 2*n, sp + 1 - n);
scm_i_swap_with_fluids (wf, dynstate);
scm_i_set_dynwinds (scm_cons (wf, scm_i_dynwinds ()));