mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-09 21:40:33 +02:00
Remove use of SCM vm in compose-continuation
* libguile/vm.c (vm_reinstate_partial_continuation): Take struct scm_vm argument instead of SCM. * libguile/vm-engine.c (compose-continuation): Adapt.
This commit is contained in:
parent
59f85eedc2
commit
44ece39907
2 changed files with 4 additions and 5 deletions
|
@ -923,7 +923,7 @@ VM_NAME (SCM vm, SCM program, SCM *argv, size_t nargs_)
|
||||||
SYNC_IP ();
|
SYNC_IP ();
|
||||||
VM_ASSERT (SCM_VM_CONT_REWINDABLE_P (vmcont),
|
VM_ASSERT (SCM_VM_CONT_REWINDABLE_P (vmcont),
|
||||||
vm_error_continuation_not_rewindable (vmcont));
|
vm_error_continuation_not_rewindable (vmcont));
|
||||||
vm_reinstate_partial_continuation (vm, vmcont, FRAME_LOCALS_COUNT_FROM (1),
|
vm_reinstate_partial_continuation (vp, vmcont, FRAME_LOCALS_COUNT_FROM (1),
|
||||||
LOCAL_ADDRESS (1),
|
LOCAL_ADDRESS (1),
|
||||||
¤t_thread->dynstack,
|
¤t_thread->dynstack,
|
||||||
®isters);
|
®isters);
|
||||||
|
|
|
@ -299,11 +299,11 @@ vm_abort (SCM vm, SCM tag, size_t nstack, SCM *stack_args, SCM tail, SCM *sp,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vm_reinstate_partial_continuation (SCM vm, SCM cont, size_t n, SCM *argv,
|
vm_reinstate_partial_continuation (struct scm_vm *vp, SCM cont,
|
||||||
|
size_t n, SCM *argv,
|
||||||
scm_t_dynstack *dynstack,
|
scm_t_dynstack *dynstack,
|
||||||
scm_i_jmp_buf *registers)
|
scm_i_jmp_buf *registers)
|
||||||
{
|
{
|
||||||
struct scm_vm *vp;
|
|
||||||
struct scm_vm_cont *cp;
|
struct scm_vm_cont *cp;
|
||||||
SCM *argv_copy, *base;
|
SCM *argv_copy, *base;
|
||||||
scm_t_ptrdiff reloc;
|
scm_t_ptrdiff reloc;
|
||||||
|
@ -312,7 +312,6 @@ vm_reinstate_partial_continuation (SCM vm, SCM cont, size_t n, SCM *argv,
|
||||||
argv_copy = alloca (n * sizeof(SCM));
|
argv_copy = alloca (n * sizeof(SCM));
|
||||||
memcpy (argv_copy, argv, n * sizeof(SCM));
|
memcpy (argv_copy, argv, n * sizeof(SCM));
|
||||||
|
|
||||||
vp = SCM_VM_DATA (vm);
|
|
||||||
cp = SCM_VM_CONT_DATA (cont);
|
cp = SCM_VM_CONT_DATA (cont);
|
||||||
base = SCM_FRAME_LOCALS_ADDRESS (vp->fp);
|
base = SCM_FRAME_LOCALS_ADDRESS (vp->fp);
|
||||||
reloc = cp->reloc + (base - cp->stack_base);
|
reloc = cp->reloc + (base - cp->stack_base);
|
||||||
|
@ -323,7 +322,7 @@ vm_reinstate_partial_continuation (SCM vm, SCM cont, size_t n, SCM *argv,
|
||||||
if ((base - vp->stack_base) + cp->stack_size + n + 1 > vp->stack_size)
|
if ((base - vp->stack_base) + cp->stack_size + n + 1 > vp->stack_size)
|
||||||
scm_misc_error ("vm-engine",
|
scm_misc_error ("vm-engine",
|
||||||
"not enough space to instate partial continuation",
|
"not enough space to instate partial continuation",
|
||||||
scm_list_2 (vm, cont));
|
scm_list_1 (cont));
|
||||||
|
|
||||||
memcpy (base, cp->stack_base, cp->stack_size * sizeof (SCM));
|
memcpy (base, cp->stack_base, cp->stack_size * sizeof (SCM));
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue