summaryrefslogtreecommitdiff
path: root/libguile/vm-engine.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2018-06-27 15:29:49 +0200
committerAndy Wingo <wingo@pobox.com>2018-06-27 15:29:49 +0200
commit294e627c6b76f3b496c9f205fce2e128f4731d1c (patch)
tree2820dce432b3990567a8b942599a8a20dd3c7ac6 /libguile/vm-engine.c
parent85ab5f02995c646ca444cacd1803060e4d230e1f (diff)
downloadguile-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.c12
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);
}