summaryrefslogtreecommitdiff
path: root/libguile/continuations.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2014-04-14 15:14:26 +0200
committerAndy Wingo <wingo@pobox.com>2014-04-14 15:14:26 +0200
commit8de051da47e8f0f56a13bde6a4b37ece5f9c81cf (patch)
treeeb2245418fce972f4e0cec507d6aa00b48ce5f13 /libguile/continuations.c
parent44d9705464d8f54111ed8a8a90d76f0c774e7184 (diff)
downloadguile-8de051da47e8f0f56a13bde6a4b37ece5f9c81cf.tar.gz
scm_c_make_frame takes struct scm_frame as arg
* libguile/frames.h: * libguile/frames.c (scm_c_make_frame): Adapt to take a const struct scm_frame as the argument. Adapt callers. * libguile/continuations.c: * libguile/stacks.c: Adapt callers.
Diffstat (limited to 'libguile/continuations.c')
-rw-r--r--libguile/continuations.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/libguile/continuations.c b/libguile/continuations.c
index f28d59afc..62a9b7f1a 100644
--- a/libguile/continuations.c
+++ b/libguile/continuations.c
@@ -179,11 +179,15 @@ scm_i_continuation_to_frame (SCM continuation)
if (scm_is_true (cont->vm_cont))
{
+ struct scm_frame frame;
struct scm_vm_cont *data = SCM_VM_CONT_DATA (cont->vm_cont);
- return scm_c_make_frame (SCM_VM_FRAME_KIND_CONT, data,
- (data->fp + data->reloc) - data->stack_base,
- (data->sp + data->reloc) - data->stack_base,
- data->ra);
+
+ frame.stack_holder = data;
+ frame.fp_offset = (data->fp + data->reloc) - data->stack_base;
+ frame.sp_offset = (data->sp + data->reloc) - data->stack_base;
+ frame.ip = data->ra;
+
+ return scm_c_make_frame (SCM_VM_FRAME_KIND_CONT, &frame);
}
else
return SCM_BOOL_F;