diff options
author | Andy Wingo <wingo@pobox.com> | 2010-02-07 14:50:51 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2010-02-08 13:35:42 +0100 |
commit | 269479e31f70d40a82b75be87c1b2a7363c85696 (patch) | |
tree | 8b8f8603e0a5610de57c1258dae7b8e89aa7139b /libguile/vm-i-system.c | |
parent | 997659f898d94abccdcba3c444b84e3c6f6e963e (diff) | |
download | guile-269479e31f70d40a82b75be87c1b2a7363c85696.tar.gz |
scm_i_make_continuation takes vm and vm_cont args explicitly
* libguile/continuations.h:
* libguile/continuations.c (scm_i_make_continuation): Take VM and VM
continuation arguments as well; I'm not convinced that saving all VM
continuations was the right thing, and in any case we only ever saved
the latest. Running a new VM should create a continuation barrier.
* libguile/stacks.c (scm_make_stack):
* libguile/vm-i-system.c (call/cc, tail-call/cc): Adapt callers.
* libguile/vm.h (scm_i_vm_capture_continuation)
(scm_i_vm_reinstate_continuation): Change to be internal, and to only
capture and reinstate continuations for a particular VM.
Diffstat (limited to 'libguile/vm-i-system.c')
-rw-r--r-- | libguile/vm-i-system.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c index de0210010..e5a9d7a0e 100644 --- a/libguile/vm-i-system.c +++ b/libguile/vm-i-system.c @@ -1093,7 +1093,7 @@ VM_DEFINE_INSTRUCTION (64, call_cc, "call/cc", 0, 1, 1) SCM proc, cont; POP (proc); SYNC_ALL (); - cont = scm_i_make_continuation (&first); + cont = scm_i_make_continuation (&first, vm, capture_vm_cont (vp)); if (first) { PUSH ((SCM)fp); /* dynamic link */ @@ -1130,7 +1130,7 @@ VM_DEFINE_INSTRUCTION (65, tail_call_cc, "tail-call/cc", 0, 1, 1) SCM proc, cont; POP (proc); SYNC_ALL (); - cont = scm_i_make_continuation (&first); + cont = scm_i_make_continuation (&first, vm, capture_vm_cont (vp)); ASSERT (sp == vp->sp); ASSERT (fp == vp->fp); if (first) |