summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/ChangeLog11
-rw-r--r--libguile/environments.c6
-rw-r--r--libguile/environments.h2
-rw-r--r--libguile/init.c10
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