diff options
author | Andy Wingo <wingo@pobox.com> | 2009-12-03 13:09:58 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-03 14:42:51 +0100 |
commit | aa3f69519f1af3fcf31cf36be33776db3fedf65a (patch) | |
tree | 5f2a4ab2d8332b5754693d4dc7997ed96cd7985d /libguile/init.c | |
parent | 14aa25e410d49586c8ff9b4a80d2b6046b769905 (diff) | |
download | guile-aa3f69519f1af3fcf31cf36be33776db3fedf65a.tar.gz |
replace frame implementation with VM frames
* libguile/stacks.h: Rework so that a stack doesn't copy information out
of VM frames, it just holds onto a VM frame, along with the stack id
and length. VM frames are now the only representation of frames in
Guile.
(scm_t_info_frame, SCM_FRAME_N_SLOTS, SCM_FRAME_REF, SCM_FRAME_NUMBER)
(SCM_FRAME_FLAGS, SCM_FRAME_SOURCE, SCM_FRAME_PROC, SCM_FRAME_ARGS)
(SCM_FRAME_PREV, SCM_FRAME_NEXT)
(SCM_FRAMEF_VOID, SCM_FRAMEF_REAL, SCM_FRAMEF_PROC)
(SCM_FRAMEF_EVAL_ARGS, SCM_FRAMEF_OVERFLOW)
(SCM_FRAME_VOID_P, SCM_FRAME_REAL_P, SCM_FRAME_PROC_P)
(SCM_FRAME_EVAL_ARGS_P, SCM_FRAME_OVERFLOW_P): Remove these macros
corresponding to the old frame implementation.
(scm_frame_p scm_frame_source, scm_frame_procedure)
(scm_frame_arguments): These definitions are now in frames.h.
(scm_last_stack_frame): Remove declaration of previously-removed
constructor. Probably should re-instate it though.
(scm_frame_number, scm_frame_previous, scm_frame_next)
(scm_frame_real_p, scm_frame_procedure_p, scm_frame_evaluating_args_p)
(scm_frame_overflow_p) : Remove these procedures corresponding to the
old stack implementation.
* libguile/stacks.c: Update for new frames implementation.
* libguile/frames.h:
* libguile/frames.c: Rename functions operating on VM frames to have a
scm_frame prefix, not scm_vm_frame -- because they really are the only
frames we have. Rename corresponding Scheme functions too, from
vm-frame-foo to frame-foo.
* libguile/deprecated.h: Remove scm_stack and scm_info_frame data types.
* libguile/vm.c (vm_dispatch_hook): Adapt to scm_c_make_frame name
change.
* module/system/vm/frame.scm: No need to export functions provided
frames.c now, as we load those procedures into the default environment
now. Rename functions, and remove a couple of outdated, unused
functions. The bottom half of this file is still bitrotten, though.
* libguile/backtrace.c: Rework to operate on the new frame
representation. Also fix a bug displaying file names for compiled
procedures.
* libguile/init.c: Load the VM much earlier, just because we can. Also
it allows us to have frames.[ch] loaded in time for stacks to be
initialized, so that scm_frame_arguments can do the right thing.
Diffstat (limited to 'libguile/init.c')
-rw-r--r-- | libguile/init.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libguile/init.c b/libguile/init.c index 3712a9a94..2180e456f 100644 --- a/libguile/init.c +++ b/libguile/init.c @@ -533,9 +533,12 @@ scm_i_init_guile (SCM_STACKITEM *base) scm_init_arrays (); scm_init_array_map (); + scm_bootstrap_vm (); + scm_init_strings (); /* Requires array-handle */ scm_init_struct (); /* Requires strings */ - scm_init_stacks (); /* Requires strings, struct */ + scm_init_frames (); + scm_init_stacks (); /* Requires strings, struct, frames */ scm_init_symbols (); scm_init_values (); /* Requires struct */ scm_init_load (); /* Requires strings */ @@ -552,7 +555,6 @@ scm_i_init_guile (SCM_STACKITEM *base) scm_init_guardians (); scm_init_vports (); scm_init_standard_ports (); /* Requires fports */ - scm_bootstrap_vm (); scm_init_memoize (); scm_init_eval (); scm_init_load_path (); |