diff options
Diffstat (limited to 'libguile/vm.h')
-rw-r--r-- | libguile/vm.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/libguile/vm.h b/libguile/vm.h index d354a53c0..c45d17f10 100644 --- a/libguile/vm.h +++ b/libguile/vm.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2001, 2009, 2010, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -50,12 +50,11 @@ struct scm_vm { int engine; /* which vm engine we're using */ SCM hooks[SCM_VM_NUM_HOOKS]; /* hooks */ int trace_level; /* traces enabled if trace_level > 0 */ - scm_t_int64 cookie; /* used to detect unrewindable continuations */ }; SCM_API SCM scm_the_vm_fluid; -#define SCM_VM_P(x) (SCM_NIMP (x) && SCM_TYP7 (x) == scm_tc7_vm) +#define SCM_VM_P(x) (SCM_HAS_TYP7 (x, scm_tc7_vm)) #define SCM_VM_DATA(vm) ((struct scm_vm *) SCM_CELL_WORD_1 (vm)) #define SCM_VALIDATE_VM(pos,x) SCM_MAKE_VALIDATE (pos, x, VM_P) @@ -93,10 +92,11 @@ struct scm_vm_cont { scm_t_ptrdiff stack_size; SCM *stack_base; scm_t_ptrdiff reloc; + scm_t_dynstack *dynstack; scm_t_uint32 flags; }; -#define SCM_VM_CONT_P(OBJ) (SCM_NIMP (OBJ) && SCM_TYP7 (OBJ) == scm_tc7_vm_cont) +#define SCM_VM_CONT_P(OBJ) (SCM_HAS_TYP7 (OBJ, scm_tc7_vm_cont)) #define SCM_VM_CONT_DATA(CONT) ((struct scm_vm_cont *) SCM_CELL_WORD_1 (CONT)) #define SCM_VM_CONT_PARTIAL_P(CONT) (SCM_VM_CONT_DATA (CONT)->flags & SCM_F_VM_CONT_PARTIAL) #define SCM_VM_CONT_REWINDABLE_P(CONT) (SCM_VM_CONT_DATA (CONT)->flags & SCM_F_VM_CONT_REWINDABLE) @@ -107,9 +107,10 @@ SCM_INTERNAL SCM scm_c_vm_run (SCM vm, SCM program, SCM *argv, int nargs); SCM_INTERNAL void scm_i_vm_print (SCM x, SCM port, scm_print_state *pstate); -SCM_INTERNAL SCM scm_i_vm_capture_continuation (SCM vm); +SCM_INTERNAL SCM scm_i_capture_current_stack (void); SCM_INTERNAL SCM scm_i_vm_capture_stack (SCM *stack_base, SCM *fp, SCM *sp, scm_t_uint8 *ra, scm_t_uint8 *mvra, + scm_t_dynstack *dynstack, scm_t_uint32 flags); SCM_INTERNAL void scm_i_vm_cont_print (SCM x, SCM port, scm_print_state *pstate); |