diff options
author | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-12-11 14:48:23 +0000 |
---|---|---|
committer | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-12-11 14:48:23 +0000 |
commit | 85db4a2c8eead51392bb16ea383526ba1ddfd23f (patch) | |
tree | 85274049b74a2787ed5b22700cb40d063303468a /libguile | |
parent | 24737ba02af8cb63982f50b7df45955b4b375298 (diff) | |
download | guile-85db4a2c8eead51392bb16ea383526ba1ddfd23f.tar.gz |
* Initialize symbols using SCM_(GLOBAL_)?SYMBOL instead of scm_sysintern...
* Use scm_str2symbol instead of scm_sysintern0.
* Garbage collection initialization code now within gc.c only.
Diffstat (limited to 'libguile')
-rw-r--r-- | libguile/ChangeLog | 27 | ||||
-rw-r--r-- | libguile/debug.c | 10 | ||||
-rw-r--r-- | libguile/eval.c | 25 | ||||
-rw-r--r-- | libguile/gc.c | 44 | ||||
-rw-r--r-- | libguile/gc.h | 4 | ||||
-rw-r--r-- | libguile/gsubr.c | 10 | ||||
-rw-r--r-- | libguile/init.c | 22 | ||||
-rw-r--r-- | libguile/keywords.c | 9 | ||||
-rw-r--r-- | libguile/options.c | 12 | ||||
-rw-r--r-- | libguile/srcprop.c | 18 | ||||
-rw-r--r-- | libguile/variable.c | 3 |
11 files changed, 100 insertions, 84 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 32e6e7bfe..4f08f902c 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,30 @@ +2000-12-11 Dirk Herrmann <D.Herrmann@tu-bs.de> + + * debug.c (scm_sym_procname, scm_sym_dots, scm_sym_source, + scm_init_debug), eval.c (scm_sym_dot, scm_sym_arrow, scm_sym_else, + scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame, + scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, + scm_init_eval), gsubr.c (scm_sym_name, scm_init_gsubr), srcprop.c + (scm_sym_filename, scm_sym_copy, scm_sym_line, scm_sym_column, + scm_sym_breakpoint), variable.c (anonymous_variable_sym): + Initialize symbols by using SCM_(GLOBAL_)?SYMBOL. + + * gc.c (scm_i_getenv_int): Moved here from init.c. + + * gc.[ch] (scm_init_storage): Read gc configuration environment + variables here, not in init.c. + + * init.c (scm_i_getenv_int): Moved to gc.c. + + (scm_init_guile_1): Move configuration code to scm_init_storage. + Make sure procprops get initialized early. + + * keywords.c (scm_c_make_keyword): Report amount of memory freed + by scm_must_free. Use scm_str2symbol instead of scm_sysintern0. + + * options.c (scm_init_opts): Use scm_str2symbol instead of + scm_sysintern0. + 2000-12-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu> * threads.h (SCM_MUTEXP): Typo: removed extra parenthesis. diff --git a/libguile/debug.c b/libguile/debug.c index 946306db1..d0600ea22 100644 --- a/libguile/debug.c +++ b/libguile/debug.c @@ -138,8 +138,10 @@ SCM_DEFINE (scm_with_traps, "with-traps", 1, 0, 0, #undef FUNC_NAME -static SCM scm_sym_source, scm_sym_dots; -static SCM scm_sym_procname; + +SCM_SYMBOL (scm_sym_procname, "procname"); +SCM_SYMBOL (scm_sym_dots, "..."); +SCM_SYMBOL (scm_sym_source, "source"); /* {Memoized Source} */ @@ -615,10 +617,6 @@ scm_init_debug () scm_tc16_debugobj = scm_make_smob_type ("debug-object", 0); scm_set_smob_print (scm_tc16_debugobj, debugobj_print); - scm_sym_procname = SCM_CAR (scm_sysintern ("procname", SCM_UNDEFINED)); - scm_sym_dots = SCM_CAR (scm_sysintern ("...", SCM_UNDEFINED)); - scm_sym_source = SCM_CAR (scm_sysintern ("source", SCM_UNDEFINED)); - #ifdef GUILE_DEBUG scm_sysintern ("SCM_IM_AND", SCM_IM_AND); scm_sysintern ("SCM_IM_BEGIN", SCM_IM_BEGIN); diff --git a/libguile/eval.c b/libguile/eval.c index 4a3b8e12e..190c06017 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -448,14 +448,19 @@ const char scm_s_variable[] = "bad variable"; const char scm_s_clauses[] = "bad or missing clauses"; const char scm_s_formals[] = "bad formals"; -SCM scm_sym_dot, scm_sym_arrow, scm_sym_else; -SCM scm_sym_unquote, scm_sym_uq_splicing, scm_sym_apply; +SCM_GLOBAL_SYMBOL (scm_sym_dot, "."); +SCM_GLOBAL_SYMBOL (scm_sym_arrow, "=>"); +SCM_GLOBAL_SYMBOL (scm_sym_else, "else"); +SCM_GLOBAL_SYMBOL (scm_sym_unquote, "unquote"); +SCM_GLOBAL_SYMBOL (scm_sym_uq_splicing, "unquote-splicing"); SCM scm_f_apply; #ifdef DEBUG_EXTENSIONS -SCM scm_sym_enter_frame, scm_sym_apply_frame, scm_sym_exit_frame; -SCM scm_sym_trace; +SCM_GLOBAL_SYMBOL (scm_sym_enter_frame, "enter-frame"); +SCM_GLOBAL_SYMBOL (scm_sym_apply_frame, "apply-frame"); +SCM_GLOBAL_SYMBOL (scm_sym_exit_frame, "exit-frame"); +SCM_GLOBAL_SYMBOL (scm_sym_trace, "trace"); #endif @@ -3880,11 +3885,6 @@ scm_init_eval () scm_f_apply = scm_make_subr ("apply", scm_tc7_lsubr_2, scm_apply); scm_system_transformer = scm_sysintern ("scm:eval-transformer", scm_make_fluid ()); - scm_sym_dot = SCM_CAR (scm_sysintern (".", SCM_UNDEFINED)); - scm_sym_arrow = SCM_CAR (scm_sysintern ("=>", SCM_UNDEFINED)); - scm_sym_else = SCM_CAR (scm_sysintern ("else", SCM_UNDEFINED)); - scm_sym_unquote = SCM_CAR (scm_sysintern ("unquote", SCM_UNDEFINED)); - scm_sym_uq_splicing = SCM_CAR (scm_sysintern ("unquote-splicing", SCM_UNDEFINED)); scm_lisp_nil = scm_sysintern ("nil", SCM_UNDEFINED); SCM_SETCDR (scm_lisp_nil, SCM_CAR (scm_lisp_nil)); @@ -3901,13 +3901,6 @@ scm_init_eval () scm_sysintern ("*top-level-lookup-closure*", scm_make_fluid ()); #endif -#ifdef DEBUG_EXTENSIONS - scm_sym_enter_frame = SCM_CAR (scm_sysintern ("enter-frame", SCM_UNDEFINED)); - scm_sym_apply_frame = SCM_CAR (scm_sysintern ("apply-frame", SCM_UNDEFINED)); - scm_sym_exit_frame = SCM_CAR (scm_sysintern ("exit-frame", SCM_UNDEFINED)); - scm_sym_trace = SCM_CAR (scm_sysintern ("trace", SCM_UNDEFINED)); -#endif - #ifndef SCM_MAGIC_SNARFER #include "libguile/eval.x" #endif diff --git a/libguile/gc.c b/libguile/gc.c index e04d50b18..3aa9c0205 100644 --- a/libguile/gc.c +++ b/libguile/gc.c @@ -2435,18 +2435,31 @@ init_freelist (scm_freelist_t *freelist, freelist->heap_size = 0; } + +/* Get an integer from an environment variable. */ +static int +scm_i_getenv_int (const char *var, int def) +{ + char *end, *val = getenv (var); + long res; + if (!val) + return def; + res = strtol (val, &end, 10); + if (end == val) + return def; + return res; +} + + int -scm_init_storage (scm_sizet init_heap_size_1, int gc_trigger_1, - scm_sizet init_heap_size_2, int gc_trigger_2, - scm_sizet max_segment_size) +scm_init_storage () { + scm_sizet gc_trigger_1; + scm_sizet gc_trigger_2; + scm_sizet init_heap_size_1; + scm_sizet init_heap_size_2; scm_sizet j; - if (!init_heap_size_1) - init_heap_size_1 = scm_default_init_heap_size_1; - if (!init_heap_size_2) - init_heap_size_2 = scm_default_init_heap_size_2; - j = SCM_NUM_PROTECTS; while (j) scm_sys_protects[--j] = SCM_BOOL_F; @@ -2454,14 +2467,11 @@ scm_init_storage (scm_sizet init_heap_size_1, int gc_trigger_1, scm_freelist = SCM_EOL; scm_freelist2 = SCM_EOL; - init_freelist (&scm_master_freelist, - 1, SCM_CLUSTER_SIZE_1, - gc_trigger_1 ? gc_trigger_1 : scm_default_min_yield_1); - init_freelist (&scm_master_freelist2, - 2, SCM_CLUSTER_SIZE_2, - gc_trigger_2 ? gc_trigger_2 : scm_default_min_yield_2); - scm_max_segment_size - = max_segment_size ? max_segment_size : scm_default_max_segment_size; + gc_trigger_1 = scm_i_getenv_int ("GUILE_MIN_YIELD_1", scm_default_min_yield_1); + init_freelist (&scm_master_freelist, 1, SCM_CLUSTER_SIZE_1, gc_trigger_1); + gc_trigger_2 = scm_i_getenv_int ("GUILE_MIN_YIELD_2", scm_default_min_yield_2); + init_freelist (&scm_master_freelist2, 2, SCM_CLUSTER_SIZE_2, gc_trigger_2); + scm_max_segment_size = scm_i_getenv_int ("GUILE_MAX_SEGMENT_SIZE", scm_default_max_segment_size); scm_expmem = 0; @@ -2473,6 +2483,8 @@ scm_init_storage (scm_sizet init_heap_size_1, int gc_trigger_1, mark_space_ptr = &mark_space_head; + init_heap_size_1 = scm_i_getenv_int ("GUILE_INIT_SEGMENT_SIZE_1", scm_default_init_heap_size_1); + init_heap_size_2 = scm_i_getenv_int ("GUILE_INIT_SEGMENT_SIZE_2", scm_default_init_heap_size_2); if (make_initial_segment (init_heap_size_1, &scm_master_freelist) || make_initial_segment (init_heap_size_2, &scm_master_freelist2)) return 1; diff --git a/libguile/gc.h b/libguile/gc.h index 9397e562d..02e39890b 100644 --- a/libguile/gc.h +++ b/libguile/gc.h @@ -354,9 +354,7 @@ extern int scm_return_first_int (int x, ...); extern SCM scm_permanent_object (SCM obj); extern SCM scm_protect_object (SCM obj); extern SCM scm_unprotect_object (SCM obj); -extern int scm_init_storage (scm_sizet init_heap_size, int trig, - scm_sizet init_heap2_size, int trig2, - scm_sizet max_segment_size); +extern int scm_init_storage (void); extern void *scm_get_stack_base (void); extern void scm_init_gc (void); diff --git a/libguile/gsubr.c b/libguile/gsubr.c index 03e27b621..83c268479 100644 --- a/libguile/gsubr.c +++ b/libguile/gsubr.c @@ -59,7 +59,8 @@ /* #define GSUBR_TEST */ -SCM scm_sym_name; +SCM_GLOBAL_SYMBOL (scm_sym_name, "name"); + SCM scm_f_gsubr_apply; SCM @@ -207,11 +208,14 @@ void scm_init_gsubr() { scm_f_gsubr_apply = scm_make_subr_opt("gsubr-apply", scm_tc7_lsubr, scm_gsubr_apply, 0); - scm_sym_name = SCM_CAR (scm_sysintern ("name", SCM_UNDEFINED)); - scm_permanent_object (scm_sym_name); + #ifdef GSUBR_TEST scm_make_gsubr("gsubr-2-1-l", 2, 1, 1, gsubr_21l); /* example */ #endif + +#ifndef SCM_MAGIC_SNARFER +#include "libguile/gsubr.x" +#endif } /* diff --git a/libguile/init.c b/libguile/init.c index b4d7467d8..b703dcf17 100644 --- a/libguile/init.c +++ b/libguile/init.c @@ -368,20 +368,6 @@ scm_load_startup_files () } } -/* Get an integer from an environment variable. */ -static int -scm_i_getenv_int (const char *var, int def) -{ - char *end, *val = getenv (var); - long res; - if (!val) - return def; - res = strtol (val, &end, 10); - if (end == val) - return def; - return res; -} - /* The main init code. */ @@ -482,11 +468,7 @@ scm_init_guile_1 (SCM_STACKITEM *base) #ifdef GUILE_DEBUG_MALLOC scm_debug_malloc_prehistory (); #endif - scm_init_storage (scm_i_getenv_int ("GUILE_INIT_SEGMENT_SIZE_1", 0), - scm_i_getenv_int ("GUILE_MIN_YIELD_1", 0), - scm_i_getenv_int ("GUILE_INIT_SEGMENT_SIZE_2", 0), - scm_i_getenv_int ("GUILE_MIN_YIELD_2", 0), - scm_i_getenv_int ("GUILE_MAX_SEGMENT_SIZE", 0)); + scm_init_storage (); scm_struct_prehistory (); /* Must come after scm_init_storage */ scm_weaks_prehistory (); /* Must come after scm_init_storage */ scm_init_subr_table (); @@ -498,6 +480,7 @@ scm_init_guile_1 (SCM_STACKITEM *base) #endif start_stack (base); scm_init_gsubr (); + scm_init_procprop (); scm_init_environments (); scm_init_feature (); scm_init_alist (); @@ -542,7 +525,6 @@ scm_init_guile_1 (SCM_STACKITEM *base) scm_init_regex_posix (); #endif scm_init_procs (); - scm_init_procprop (); scm_init_scmsigs (); #ifdef HAVE_NETWORKING scm_init_net_db (); diff --git a/libguile/keywords.c b/libguile/keywords.c index b8af91c08..f14627144 100644 --- a/libguile/keywords.c +++ b/libguile/keywords.c @@ -95,13 +95,16 @@ SCM_DEFINE (scm_make_keyword_from_dash_symbol, "make-keyword-from-dash-symbol", SCM scm_c_make_keyword (char *s) { - SCM vcell; char *buf = scm_must_malloc (strlen (s) + 2, "keyword"); + SCM symbol; + buf[0] = '-'; strcpy (buf + 1, s); - vcell = scm_sysintern0 (buf); + symbol = scm_str2symbol (buf); scm_must_free (buf); - return scm_make_keyword_from_dash_symbol (SCM_CAR (vcell)); + scm_done_free (strlen (s) + 2); + + return scm_make_keyword_from_dash_symbol (symbol); } SCM_DEFINE (scm_keyword_p, "keyword?", 1, 0, 0, diff --git a/libguile/options.c b/libguile/options.c index 051286d5c..94e74d573 100644 --- a/libguile/options.c +++ b/libguile/options.c @@ -218,9 +218,15 @@ scm_init_opts (SCM (*func) (SCM), scm_option options[], int n) for (i = 0; i < n; ++i) { - options[i].name = (char *) SCM_CAR (scm_sysintern0 (options[i].name)); - options[i].doc = (char *) scm_permanent_object (scm_take0str - (options[i].doc)); + SCM name; + SCM doc; + + name = scm_str2symbol (options[i].name); + options[i].name = (char *) name; + scm_permanent_object (name); + doc = scm_take0str (options[i].doc); + options[i].doc = (char *) doc; + scm_permanent_object (doc); if (options[i].type == SCM_OPTION_SCM) SCM_SETCDR (protected_objects, scm_cons (SCM_PACK(options[i].val), SCM_CDR (protected_objects))); diff --git a/libguile/srcprop.c b/libguile/srcprop.c index 7df11f8f2..0fa027283 100644 --- a/libguile/srcprop.c +++ b/libguile/srcprop.c @@ -76,11 +76,11 @@ * */ -SCM scm_sym_filename; -SCM scm_sym_copy; -SCM scm_sym_line; -SCM scm_sym_column; -SCM scm_sym_breakpoint; +SCM_GLOBAL_SYMBOL (scm_sym_filename, "filename"); +SCM_GLOBAL_SYMBOL (scm_sym_copy, "copy"); +SCM_GLOBAL_SYMBOL (scm_sym_line, "line"); +SCM_GLOBAL_SYMBOL (scm_sym_column, "column"); +SCM_GLOBAL_SYMBOL (scm_sym_breakpoint, "breakpoint"); scm_bits_t scm_tc16_srcprops; static scm_srcprops_chunk *srcprops_chunklist = 0; @@ -329,14 +329,8 @@ scm_init_srcprop () scm_set_smob_print (scm_tc16_srcprops, srcprops_print); scm_source_whash = scm_make_weak_key_hash_table (SCM_MAKINUM (2047)); - - scm_sym_filename = SCM_CAR (scm_sysintern ("filename", SCM_UNDEFINED)); - scm_sym_copy = SCM_CAR (scm_sysintern ("copy", SCM_UNDEFINED)); - scm_sym_line = SCM_CAR (scm_sysintern ("line", SCM_UNDEFINED)); - scm_sym_column = SCM_CAR (scm_sysintern ("column", SCM_UNDEFINED)); - scm_sym_breakpoint = SCM_CAR (scm_sysintern ("breakpoint", SCM_UNDEFINED)); - scm_sysintern ("source-whash", scm_source_whash); + #ifndef SCM_MAGIC_SNARFER #include "libguile/srcprop.x" #endif diff --git a/libguile/variable.c b/libguile/variable.c index 163fb8ed2..0b586c721 100644 --- a/libguile/variable.c +++ b/libguile/variable.c @@ -83,7 +83,7 @@ variable_equalp (SCM var1, SCM var2) } -static SCM anonymous_variable_sym; +SCM_SYMBOL (anonymous_variable_sym, "anonymous-variable"); static SCM @@ -229,7 +229,6 @@ scm_init_variable () scm_set_smob_print (scm_tc16_variable, variable_print); scm_set_smob_equalp (scm_tc16_variable, variable_equalp); - anonymous_variable_sym = SCM_CAR (scm_sysintern ("anonymous-variable", SCM_UNDEFINED)); #ifndef SCM_MAGIC_SNARFER #include "libguile/variable.x" #endif |