diff options
Diffstat (limited to 'libguile/frames.h')
-rw-r--r-- | libguile/frames.h | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/libguile/frames.h b/libguile/frames.h index f744c2b24..45ade5a10 100644 --- a/libguile/frames.h +++ b/libguile/frames.h @@ -27,6 +27,16 @@ * VM frames */ +/* + * It's a little confusing, but there are two representations of frames in this + * file: frame pointers and Scheme objects wrapping those frame pointers. The + * former uses the SCM_FRAME_... macro prefix, the latter SCM_VM_FRAME_.. + * prefix. + * + * The confusing thing is that only Scheme frame objects have functions that use + * them, and they use the scm_frame_.. prefix. Hysterical raisins. + */ + /* VM Frame Layout --------------- @@ -77,9 +87,9 @@ * Heap frames */ -SCM_API scm_t_bits scm_tc16_vm_frame; +SCM_API scm_t_bits scm_tc16_frame; -struct scm_vm_frame +struct scm_frame { SCM stack_holder; SCM *fp; @@ -88,8 +98,8 @@ struct scm_vm_frame scm_t_ptrdiff offset; }; -#define SCM_VM_FRAME_P(x) SCM_SMOB_PREDICATE (scm_tc16_vm_frame, x) -#define SCM_VM_FRAME_DATA(x) ((struct scm_vm_frame*)SCM_SMOB_DATA (x)) +#define SCM_VM_FRAME_P(x) SCM_SMOB_PREDICATE (scm_tc16_frame, x) +#define SCM_VM_FRAME_DATA(x) ((struct scm_frame*)SCM_SMOB_DATA (x)) #define SCM_VM_FRAME_STACK_HOLDER(f) SCM_VM_FRAME_DATA(f)->stack_holder #define SCM_VM_FRAME_FP(f) SCM_VM_FRAME_DATA(f)->fp #define SCM_VM_FRAME_SP(f) SCM_VM_FRAME_DATA(f)->sp @@ -97,21 +107,21 @@ struct scm_vm_frame #define SCM_VM_FRAME_OFFSET(f) SCM_VM_FRAME_DATA(f)->offset #define SCM_VALIDATE_VM_FRAME(p,x) SCM_MAKE_VALIDATE (p, x, VM_FRAME_P) -SCM_API SCM scm_c_make_vm_frame (SCM stack_holder, SCM *fp, SCM *sp, - scm_t_uint8 *ip, scm_t_ptrdiff offset); -SCM_API SCM scm_vm_frame_p (SCM obj); -SCM_API SCM scm_vm_frame_program (SCM frame); -SCM_API SCM scm_vm_frame_arguments (SCM frame); -SCM_API SCM scm_vm_frame_source (SCM frame); -SCM_API SCM scm_vm_frame_num_locals (SCM frame); -SCM_API SCM scm_vm_frame_local_ref (SCM frame, SCM index); -SCM_API SCM scm_vm_frame_local_set_x (SCM frame, SCM index, SCM val); -SCM_API SCM scm_vm_frame_instruction_pointer (SCM frame); -SCM_API SCM scm_vm_frame_return_address (SCM frame); -SCM_API SCM scm_vm_frame_mv_return_address (SCM frame); -SCM_API SCM scm_vm_frame_dynamic_link (SCM frame); - -SCM_API SCM scm_c_vm_frame_prev (SCM frame); +SCM_API SCM scm_c_make_frame (SCM stack_holder, SCM *fp, SCM *sp, + scm_t_uint8 *ip, scm_t_ptrdiff offset); +SCM_API SCM scm_frame_p (SCM obj); +SCM_API SCM scm_frame_procedure (SCM frame); +SCM_API SCM scm_frame_arguments (SCM frame); +SCM_API SCM scm_frame_source (SCM frame); +SCM_API SCM scm_frame_num_locals (SCM frame); +SCM_API SCM scm_frame_local_ref (SCM frame, SCM index); +SCM_API SCM scm_frame_local_set_x (SCM frame, SCM index, SCM val); +SCM_API SCM scm_frame_instruction_pointer (SCM frame); +SCM_API SCM scm_frame_return_address (SCM frame); +SCM_API SCM scm_frame_mv_return_address (SCM frame); +SCM_API SCM scm_frame_dynamic_link (SCM frame); + +SCM_API SCM scm_c_frame_prev (SCM frame); SCM_INTERNAL void scm_bootstrap_frames (void); SCM_INTERNAL void scm_init_frames (void); |