summaryrefslogtreecommitdiff
path: root/libguile/vm-engine.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r--libguile/vm-engine.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c
index cf4cab7ff..341a006fd 100644
--- a/libguile/vm-engine.c
+++ b/libguile/vm-engine.c
@@ -321,7 +321,7 @@ VM_NAME (scm_thread *thread)
*/
VM_DEFINE_OP (0, halt, "halt", OP1 (X32))
{
- size_t frame_size = 2;
+ size_t frame_size = 3;
/* Boot closure, then empty frame, then callee, then values. */
size_t first_value = 1 + frame_size + 1;
uint32_t nvals = FRAME_LOCALS_COUNT_FROM (first_value);
@@ -373,6 +373,7 @@ VM_NAME (scm_thread *thread)
VP->fp = SCM_FRAME_SLOT (old_fp, proc - 1);
SCM_FRAME_SET_DYNAMIC_LINK (VP->fp, old_fp);
SCM_FRAME_SET_VIRTUAL_RETURN_ADDRESS (VP->fp, ip + 2);
+ SCM_FRAME_SET_MACHINE_RETURN_ADDRESS (VP->fp, 0);
RESET_FRAME (nlocals);
@@ -416,6 +417,7 @@ VM_NAME (scm_thread *thread)
VP->fp = SCM_FRAME_SLOT (old_fp, proc - 1);
SCM_FRAME_SET_DYNAMIC_LINK (VP->fp, old_fp);
SCM_FRAME_SET_VIRTUAL_RETURN_ADDRESS (VP->fp, ip + 3);
+ SCM_FRAME_SET_MACHINE_RETURN_ADDRESS (VP->fp, 0);
RESET_FRAME (nlocals);