mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
* 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.
This commit is contained in:
parent
24737ba02a
commit
85db4a2c8e
11 changed files with 102 additions and 86 deletions
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -2435,17 +2435,30 @@ init_freelist (scm_freelist_t *freelist,
|
|||
freelist->heap_size = 0;
|
||||
}
|
||||
|
||||
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_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;
|
||||
/* 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 gc_trigger_1;
|
||||
scm_sizet gc_trigger_2;
|
||||
scm_sizet init_heap_size_1;
|
||||
scm_sizet init_heap_size_2;
|
||||
scm_sizet j;
|
||||
|
||||
j = SCM_NUM_PROTECTS;
|
||||
while (j)
|
||||
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -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 ();
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)));
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue