diff options
-rw-r--r-- | libguile/ChangeLog | 11 | ||||
-rw-r--r-- | libguile/environments.c | 6 | ||||
-rw-r--r-- | libguile/environments.h | 2 | ||||
-rw-r--r-- | libguile/init.c | 10 |
4 files changed, 24 insertions, 5 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 9b41ead57..cdd7cceff 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,14 @@ +2000-12-16 Dirk Herrmann <D.Herrmann@tu-bs.de> + + * environments.[ch] (scm_system_environment): New variable, will + replace scm_symhash soon. We may decide for a better name and + also to split this up into a set of environments later. + + (scm_environments_prehistory): Initialize scm_system_environment. + + * init.c (scm_init_guile_1): scm_environments_prehistory requires + storage to be initialized. + 2000-12-15 Dirk Herrmann <D.Herrmann@tu-bs.de> * eval.c (change_environment, inner_eval, restore_environment): diff --git a/libguile/environments.c b/libguile/environments.c index 85fbea5d5..8e42afa58 100644 --- a/libguile/environments.c +++ b/libguile/environments.c @@ -60,6 +60,8 @@ scm_bits_t scm_tc16_environment; scm_bits_t scm_tc16_observer; #define DEFAULT_OBARRAY_SIZE 137 +SCM scm_system_environment; + /* error conditions */ @@ -2304,6 +2306,10 @@ scm_environments_prehistory () scm_tc16_observer = scm_make_smob_type ("observer", 0); scm_set_smob_mark (scm_tc16_observer, observer_mark); scm_set_smob_print (scm_tc16_observer, observer_print); + + /* create system environment */ + scm_system_environment = scm_make_leaf_environment (); + scm_permanent_object (scm_system_environment); } diff --git a/libguile/environments.h b/libguile/environments.h index 4e0d0b054..04332d0a0 100644 --- a/libguile/environments.h +++ b/libguile/environments.h @@ -121,6 +121,8 @@ extern scm_bits_t scm_tc16_observer; #define SCM_OBSERVER_PROC(x) \ ((scm_environment_observer) SCM_CELL_WORD_3 (x)) +extern SCM scm_system_environment; + extern void scm_error_environment_unbound (const char *, SCM, SCM) SCM_NORETURN; extern void scm_error_environment_immutable_binding (const char *, SCM, SCM) SCM_NORETURN; extern void scm_error_environment_immutable_location (const char *, SCM, SCM) SCM_NORETURN; diff --git a/libguile/init.c b/libguile/init.c index d20cdc236..e180b99ae 100644 --- a/libguile/init.c +++ b/libguile/init.c @@ -469,13 +469,13 @@ scm_init_guile_1 (SCM_STACKITEM *base) scm_debug_malloc_prehistory (); #endif scm_init_storage (); - scm_struct_prehistory (); /* requires storage */ - scm_symbols_prehistory (); /* requires storage */ - scm_weaks_prehistory (); /* requires storage */ + scm_struct_prehistory (); /* requires storage */ + scm_symbols_prehistory (); /* requires storage */ + scm_weaks_prehistory (); /* requires storage */ scm_init_subr_table (); - scm_environments_prehistory (); /* create the root environment */ + scm_environments_prehistory (); /* requires storage */ scm_init_continuations (); - scm_init_root (); /* requires continuations */ + scm_init_root (); /* requires continuations */ #ifdef USE_THREADS scm_init_threads (base); #endif |