mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 03:30:27 +02:00
Remove sp from scm_vm_cont
* libguile/vm.h (struct scm_vm_cont): Remove "sp" member; it's always the same as stack_bottom. * libguile/vm.c (scm_i_vm_cont_to_frame, scm_i_vm_capture_stack): (vm_return_to_continuation_inner): * libguile/stacks.c (scm_make_stack): * libguile/continuations.c (scm_i_continuation_to_frame): Adapt.
This commit is contained in:
parent
aa9f6b0082
commit
30c06bfbb3
4 changed files with 4 additions and 8 deletions
|
@ -186,7 +186,7 @@ scm_i_continuation_to_frame (SCM continuation, struct scm_frame *frame)
|
|||
stack_top = data->stack_bottom + data->stack_size;
|
||||
frame->stack_holder = data;
|
||||
frame->fp_offset = stack_top - (data->fp + data->reloc);
|
||||
frame->sp_offset = stack_top - (data->sp + data->reloc);
|
||||
frame->sp_offset = data->stack_size;
|
||||
frame->ip = data->ra;
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -330,7 +330,7 @@ SCM_DEFINE (scm_make_stack, "make-stack", 1, 0, 1,
|
|||
kind = SCM_VM_FRAME_KIND_CONT;
|
||||
frame.stack_holder = c;
|
||||
frame.fp_offset = stack_top - (c->fp + c->reloc);
|
||||
frame.sp_offset = stack_top - (c->sp + c->reloc);
|
||||
frame.sp_offset = c->stack_size;
|
||||
frame.ip = c->ra;
|
||||
}
|
||||
else if (SCM_VM_FRAME_P (obj))
|
||||
|
|
|
@ -120,7 +120,7 @@ scm_i_vm_cont_to_frame (SCM cont, struct scm_frame *frame)
|
|||
stack_top = data->stack_bottom + data->stack_size;
|
||||
frame->stack_holder = data;
|
||||
frame->fp_offset = stack_top - (data->fp + data->reloc);
|
||||
frame->sp_offset = stack_top - (data->sp + data->reloc);
|
||||
frame->sp_offset = data->stack_size;
|
||||
frame->ip = data->ra;
|
||||
|
||||
return 1;
|
||||
|
@ -142,7 +142,6 @@ scm_i_vm_capture_stack (union scm_vm_stack_element *stack_top,
|
|||
p->stack_bottom = scm_gc_malloc (p->stack_size * sizeof (*p->stack_bottom),
|
||||
"capture_vm_cont");
|
||||
p->ra = ra;
|
||||
p->sp = sp;
|
||||
p->fp = fp;
|
||||
memcpy (p->stack_bottom, sp, p->stack_size * sizeof (*p->stack_bottom));
|
||||
p->reloc = (p->stack_bottom + p->stack_size) - stack_top;
|
||||
|
@ -178,7 +177,7 @@ vm_return_to_continuation_inner (void *data_ptr)
|
|||
memcpy (vp->stack_top - cp->stack_size,
|
||||
cp->stack_bottom,
|
||||
cp->stack_size * sizeof (*cp->stack_bottom));
|
||||
vm_restore_sp (vp, cp->sp + reloc);
|
||||
vm_restore_sp (vp, vp->stack_top - cp->stack_size);
|
||||
|
||||
if (reloc)
|
||||
{
|
||||
|
|
|
@ -79,9 +79,6 @@ SCM_INTERNAL void scm_i_vm_free_stack (struct scm_vm *vp);
|
|||
#define SCM_F_VM_CONT_REWINDABLE 0x2
|
||||
|
||||
struct scm_vm_cont {
|
||||
/* FIXME: sp isn't needed, it's effectively the same as
|
||||
stack_bottom */
|
||||
union scm_vm_stack_element *sp;
|
||||
union scm_vm_stack_element *fp;
|
||||
scm_t_uint32 *ra;
|
||||
scm_t_ptrdiff stack_size;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue