diff options
author | Andy Wingo <wingo@pobox.com> | 2018-06-27 15:29:49 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2018-06-27 15:29:49 +0200 |
commit | 294e627c6b76f3b496c9f205fce2e128f4731d1c (patch) | |
tree | 2820dce432b3990567a8b942599a8a20dd3c7ac6 /libguile/vm-engine.c | |
parent | 85ab5f02995c646ca444cacd1803060e4d230e1f (diff) | |
download | guile-294e627c6b76f3b496c9f205fce2e128f4731d1c.tar.gz |
Intrinsic for "prompt"
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS):
* libguile/intrinsics.c (push_prompt, scm_bootstrap_intrinsics): New
intrinsic.
* libguile/vm-engine.c (prompt): Use push-prompt intrinsic.
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r-- | libguile/vm-engine.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index 357acebc6..7e4bd8966 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -1671,7 +1671,6 @@ VM_NAME (scm_thread *thread, jmp_buf *registers, int resume) uint32_t tag, proc_slot; int32_t offset; uint8_t escape_only_p; - scm_t_dynstack_prompt_flags flags; UNPACK_24 (op, tag); escape_only_p = ip[1] & 0x1; @@ -1680,14 +1679,11 @@ VM_NAME (scm_thread *thread, jmp_buf *registers, int resume) offset >>= 8; /* Sign extension */ /* Push the prompt onto the dynamic stack. */ - flags = escape_only_p ? SCM_F_DYNSTACK_PROMPT_ESCAPE_ONLY : 0; SYNC_IP (); - scm_dynstack_push_prompt (&thread->dynstack, flags, - SP_REF (tag), - VP->stack_top - VP->fp, - VP->stack_top - FP_SLOT (proc_slot), - ip + offset, - registers); + scm_vm_intrinsics.push_prompt (thread, registers, escape_only_p, + SP_REF (tag), FP_SLOT (proc_slot), + ip + offset); + NEXT (3); } |