summaryrefslogtreecommitdiff
path: root/libguile/vm.h
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/vm.h')
-rw-r--r--libguile/vm.h11
1 files changed, 4 insertions, 7 deletions
diff --git a/libguile/vm.h b/libguile/vm.h
index 6d6bd4e11..a4dc78029 100644
--- a/libguile/vm.h
+++ b/libguile/vm.h
@@ -58,6 +58,7 @@ struct scm_vm {
SCM overflow_handler_stack; /* alist of max-stack-size -> thunk */
SCM hooks[SCM_VM_NUM_HOOKS]; /* hooks */
jmp_buf *registers; /* registers captured at latest vm entry */
+ uint8_t *mra_after_abort; /* mra to resume after nonlocal exit, or NULL */
int engine; /* which vm engine we're using */
};
@@ -90,7 +91,9 @@ SCM_INTERNAL void scm_i_vm_free_stack (struct scm_vm *vp);
struct scm_vm_cont {
/* IP of newest frame. */
- uint32_t *ra;
+ uint32_t *vra;
+ /* Machine code corresponding to IP. */
+ uint8_t *mra;
/* Offset of FP of newest frame, relative to stack top. */
ptrdiff_t fp_offset;
/* Besides being the stack size, this is also the offset of the SP of
@@ -114,12 +117,6 @@ SCM_API SCM scm_load_compiled_with_vm (SCM file);
SCM_INTERNAL SCM scm_i_call_with_current_continuation (SCM proc);
SCM_INTERNAL SCM scm_i_capture_current_stack (void);
-SCM_INTERNAL SCM scm_i_vm_capture_stack (union scm_vm_stack_element *stack_top,
- union scm_vm_stack_element *fp,
- union scm_vm_stack_element *sp,
- uint32_t *ra,
- scm_t_dynstack *dynstack,
- uint32_t flags);
SCM_INTERNAL void scm_i_vm_abort (SCM *tag_and_argv, size_t n) SCM_NORETURN;
SCM_INTERNAL int scm_i_vm_cont_to_frame (SCM cont, struct scm_frame *frame);
SCM_INTERNAL void scm_i_vm_cont_print (SCM x, SCM port,