diff options
Diffstat (limited to 'libguile/eval.c')
-rw-r--r-- | libguile/eval.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/libguile/eval.c b/libguile/eval.c index 142d20abf..d7ab5627f 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -438,8 +438,7 @@ eval (SCM x, SCM env) case SCM_M_PROMPT: { SCM vm, k, res; - scm_t_dynstack_prompt_flags flags; - scm_t_prompt_registers *regs; + scm_i_jmp_buf registers; /* We need the handler after nonlocal return to the setjmp, so make sure it is volatile. */ volatile SCM handler; @@ -449,15 +448,15 @@ eval (SCM x, SCM env) vm = scm_the_vm (); /* Push the prompt onto the dynamic stack. */ - regs = scm_c_make_prompt_registers (SCM_VM_DATA (vm)->fp, - SCM_VM_DATA (vm)->sp, - SCM_VM_DATA (vm)->ip, - -1); - flags = SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY; scm_dynstack_push_prompt (&SCM_I_CURRENT_THREAD->dynstack, - flags, k, regs); - - if (SCM_I_SETJMP (regs->regs)) + SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY, + k, + SCM_VM_DATA (vm)->fp, + SCM_VM_DATA (vm)->sp, + SCM_VM_DATA (vm)->ip, + ®isters); + + if (SCM_I_SETJMP (registers)) { /* The prompt exited nonlocally. */ proc = handler; |