more boot cleanup
authorAndy Wingo <wingo@pobox.com>
Sat, 5 Dec 2009 10:43:20 +0000 (11:43 +0100)
committerAndy Wingo <wingo@pobox.com>
Sat, 5 Dec 2009 10:44:09 +0000 (11:44 +0100)
* libguile/bytevectors.c (scm_bootstrap_bytevectors): Remove a call to
  scm_gc_protect_object.

* libguile/gc.h:
* libguile/gc.c (scm_init_gc_protect_object): Rename from
  scm_init_storage, and just return void. Make the GC boot procs have
  internal linkage.

* libguile/init.c: Adapt to the name change.

libguile/bytevectors.c
libguile/gc.c
libguile/gc.h
libguile/init.c

index 63fdb5c..ac5bc16 100644 (file)
@@ -2202,8 +2202,7 @@ scm_bootstrap_bytevectors (void)
   /* This must be instantiated here because the generalized-vector API may
      want to access bytevectors even though `(rnrs bytevector)' hasn't been
      loaded.  */
-  scm_null_bytevector =
-    scm_gc_protect_object (make_bytevector (0, SCM_ARRAY_ELEMENT_TYPE_VU8));
+  scm_null_bytevector = make_bytevector (0, SCM_ARRAY_ELEMENT_TYPE_VU8);
 
 #ifdef WORDS_BIGENDIAN
   scm_i_native_endianness = scm_from_locale_symbol ("big");
index b2960b1..b527e49 100644 (file)
@@ -646,8 +646,8 @@ scm_storage_prehistory ()
 
 scm_i_pthread_mutex_t scm_i_gc_admin_mutex = SCM_I_PTHREAD_MUTEX_INITIALIZER;
 
-int
-scm_init_storage ()
+void
+scm_init_gc_protect_object ()
 {
   size_t j;
 
@@ -670,8 +670,6 @@ scm_init_storage ()
 #endif
 
   scm_protects = scm_c_make_hash_table (31);
-
-  return 0;
 }
 
 \f
index 34c9b84..05b08af 100644 (file)
@@ -237,9 +237,9 @@ SCM_API void scm_gc_register_root (SCM *p);
 SCM_API void scm_gc_unregister_root (SCM *p);
 SCM_API void scm_gc_register_roots (SCM *b, unsigned long n);
 SCM_API void scm_gc_unregister_roots (SCM *b, unsigned long n);
-SCM_API void scm_storage_prehistory (void);
-SCM_API int scm_init_storage (void);
-SCM_API void scm_init_gc (void);
+SCM_INTERNAL void scm_storage_prehistory (void);
+SCM_INTERNAL void scm_init_gc_protect_object (void);
+SCM_INTERNAL void scm_init_gc (void);
 
 #if SCM_ENABLE_DEPRECATED == 1
 
index 05f5c97..c674b40 100644 (file)
@@ -435,21 +435,20 @@ scm_i_init_guile (SCM_STACKITEM *base)
     }
 
   scm_storage_prehistory ();
-  scm_threads_prehistory (base);
-  scm_weaks_prehistory ();
+  scm_threads_prehistory (base);  /* requires storage_prehistory */
+  scm_weaks_prehistory ();        /* requires storage_prehistory */
 #ifdef GUILE_DEBUG_MALLOC
   scm_debug_malloc_prehistory ();
 #endif
-  if (scm_init_storage ())        /* requires threads_prehistory */
-    abort ();
-  
+  scm_init_gc_protect_object ();  /* requires threads_prehistory, only provides
+                                     scm_protect_object / scm_permanent_object */
   scm_smob_prehistory ();
-  scm_symbols_prehistory ();      /* requires storage */
-  scm_modules_prehistory ();      /* requires storage */
-  scm_init_variable ();           /* all bindings need variables */
-  scm_init_continuations ();
+  scm_symbols_prehistory ();      /* requires weaks_prehistory */
+  scm_modules_prehistory ();
+  scm_init_variable ();
+  scm_init_continuations ();      /* requires smobs */
   scm_init_root ();              /* requires continuations */
-  scm_init_threads ();            /* requires fluids */
+  scm_init_threads ();
   scm_init_gsubr ();
   scm_init_thread_procs ();       /* requires gsubrs */
   scm_init_procprop ();
@@ -465,20 +464,20 @@ scm_i_init_guile (SCM_STACKITEM *base)
   scm_init_eq ();
   scm_init_error ();
   scm_init_fluids ();
-  scm_init_feature ();          /* Requires fluids */
-  scm_init_backtrace ();       /* Requires fluids */
+  scm_init_feature ();
+  scm_init_backtrace ();
   scm_init_fports ();
   scm_init_strports ();
   scm_init_ports ();
   scm_init_gdbint ();           /* Requires strports */
   scm_init_hash ();
   scm_init_hashtab ();
-  scm_init_deprecation ();      /* Requires hashtabs */
+  scm_init_deprecation ();
   scm_init_objprop ();
   scm_init_promises ();
   scm_init_properties ();
   scm_init_hooks ();            /* Requires smob_prehistory */
-  scm_init_gc ();              /* Requires hooks, async */
+  scm_init_gc ();              /* Requires hooks */
   scm_init_gettext ();
   scm_init_ioext ();
   scm_init_keywords ();