[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
guile/guile-core NEWS libguile/ChangeLog libgui...
From: |
Dirk Herrmann |
Subject: |
guile/guile-core NEWS libguile/ChangeLog libgui... |
Date: |
Fri, 08 Dec 2000 05:41:57 -0800 |
CVSROOT: /cvs
Module name: guile
Changes by: Dirk Herrmann <address@hidden> 00/12/08 05:41:56
Modified files:
guile-core : NEWS
guile-core/libguile: ChangeLog environments.c gc.c symbols.c
symbols.h
Log message:
* Guile does not assume a hash table size of scm_symhash_dim any more.
CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/NEWS.diff?r1=1.224&r2=1.225
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/ChangeLog.diff?r1=1.1196&r2=1.1197
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/environments.c.diff?r1=1.8&r2=1.9
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/gc.c.diff?r1=1.169&r2=1.170
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/symbols.c.diff?r1=1.68&r2=1.69
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/symbols.h.diff?r1=1.45&r2=1.46
Patches:
Index: guile/guile-core/NEWS
diff -u guile/guile-core/NEWS:1.224 guile/guile-core/NEWS:1.225
--- guile/guile-core/NEWS:1.224 Wed Dec 6 07:16:58 2000
+++ guile/guile-core/NEWS Fri Dec 8 05:41:56 2000
@@ -322,6 +322,8 @@
** Removed function: scm_struct_init
+** Removed variable: scm_symhash_dim
+
** Renamed function: scm_make_cont has been replaced by
scm_make_continuation, which has a different interface.
Index: guile/guile-core/libguile/ChangeLog
diff -u guile/guile-core/libguile/ChangeLog:1.1196
guile/guile-core/libguile/ChangeLog:1.1197
--- guile/guile-core/libguile/ChangeLog:1.1196 Thu Dec 7 05:46:32 2000
+++ guile/guile-core/libguile/ChangeLog Fri Dec 8 05:41:56 2000
@@ -1,3 +1,23 @@
+2000-12-08 Dirk Herrmann <address@hidden>
+
+ * environments.c (DEFAULT_OBARRAY_SIZE), gc.c
+ (DEFAULT_SYMHASH_SIZE): Added to locally determine arbitrary
+ default values for obarrays, thus removing the dependency from
+ scm_symhash_dim.
+
+ * environments.c (scm_make_leaf_environment,
+ scm_make_eval_environment), gc.c (scm_init_storage): Don't use
+ scm_symhash_dim.
+
+ * symbols.c (NUM_HASH_BUCKETS), symbols.[ch] (scm_symhash_dim):
+ Removed.
+
+ * symbols.c (scm_sym2vcell, scm_sysintern0_no_module_lookup):
+ Eliminate a redundant SCM_IMP test.
+
+ (scm_sym2vcell, scm_sysintern0_no_module_lookup):
+ Don't assume a fixed obarray size any more.
+
2000-12-07 Dirk Herrmann <address@hidden>
* gc.c (scm_init_gc): gc_async is already protected from gc,
Index: guile/guile-core/libguile/environments.c
diff -u guile/guile-core/libguile/environments.c:1.8
guile/guile-core/libguile/environments.c:1.9
--- guile/guile-core/libguile/environments.c:1.8 Fri Nov 17 08:25:03 2000
+++ guile/guile-core/libguile/environments.c Fri Dec 8 05:41:56 2000
@@ -58,6 +58,7 @@
long scm_tc16_environment;
long scm_tc16_observer;
+#define DEFAULT_OBARRAY_SIZE 137
@@ -1036,7 +1037,7 @@
env = scm_make_environment (body);
core_environments_init (&body->base, &leaf_environment_funcs);
- body->obarray = scm_make_vector (SCM_MAKINUM (scm_symhash_dim), SCM_EOL);
+ body->obarray = scm_make_vector (SCM_MAKINUM (DEFAULT_OBARRAY_SIZE),
SCM_EOL);
return env;
}
@@ -1428,7 +1429,7 @@
env = scm_make_environment (body);
core_environments_init (&body->base, &eval_environment_funcs);
- body->obarray = scm_make_vector (SCM_MAKINUM (scm_symhash_dim), SCM_EOL);
+ body->obarray = scm_make_vector (SCM_MAKINUM (DEFAULT_OBARRAY_SIZE),
SCM_EOL);
body->imported = imported;
body->imported_observer
= SCM_ENVIRONMENT_OBSERVE (imported, eval_environment_observer, env, 1);
Index: guile/guile-core/libguile/gc.c
diff -u guile/guile-core/libguile/gc.c:1.169
guile/guile-core/libguile/gc.c:1.170
--- guile/guile-core/libguile/gc.c:1.169 Thu Dec 7 05:46:33 2000
+++ guile/guile-core/libguile/gc.c Fri Dec 8 05:41:56 2000
@@ -2506,9 +2506,12 @@
scm_listofnull = scm_cons (SCM_EOL, SCM_EOL);
scm_nullstr = scm_makstr (0L, 0);
scm_nullvect = scm_make_vector (SCM_INUM0, SCM_UNDEFINED);
- scm_symhash = scm_make_vector (SCM_MAKINUM (scm_symhash_dim), SCM_EOL);
- scm_weak_symhash = scm_make_weak_key_hash_table (SCM_MAKINUM
(scm_symhash_dim));
- scm_symhash_vars = scm_make_vector (SCM_MAKINUM (scm_symhash_dim), SCM_EOL);
+
+#define DEFAULT_SYMHASH_SIZE 277
+ scm_symhash = scm_make_vector (SCM_MAKINUM (DEFAULT_SYMHASH_SIZE), SCM_EOL);
+ scm_weak_symhash = scm_make_weak_key_hash_table (SCM_MAKINUM
(DEFAULT_SYMHASH_SIZE));
+ scm_symhash_vars = scm_make_vector (SCM_MAKINUM (DEFAULT_SYMHASH_SIZE),
SCM_EOL);
+
scm_stand_in_procs = SCM_EOL;
scm_permobjs = SCM_EOL;
scm_protects = scm_make_vector (SCM_MAKINUM (31), SCM_EOL);
Index: guile/guile-core/libguile/symbols.c
diff -u guile/guile-core/libguile/symbols.c:1.68
guile/guile-core/libguile/symbols.c:1.69
--- guile/guile-core/libguile/symbols.c:1.68 Tue Nov 28 08:37:40 2000
+++ guile/guile-core/libguile/symbols.c Fri Dec 8 05:41:56 2000
@@ -66,12 +66,6 @@
-/* NUM_HASH_BUCKETS is the number of symbol scm_hash table buckets.
- */
-#define NUM_HASH_BUCKETS 137
-
-
-
static char *
duplicate_string (const char * src, unsigned long length)
{
@@ -109,9 +103,6 @@
}
-int scm_symhash_dim = NUM_HASH_BUCKETS;
-
-
/* scm_sym2vcell
* looks up the symbol in the symhash table.
*/
@@ -131,24 +122,23 @@
if (SCM_FALSEP (var))
return SCM_BOOL_F;
+ else if (SCM_VARIABLEP (var))
+ return SCM_VARVCELL (var);
else
- {
- if (SCM_IMP(var) || !SCM_VARIABLEP (var))
- scm_wta (sym, "strangely interned symbol? ", "");
- return SCM_VARVCELL (var);
- }
+ scm_wta (sym, "strangely interned symbol? ", "");
}
else
{
SCM lsym;
SCM * lsymp;
- SCM z;
- scm_sizet hash = SCM_SYMBOL_HASH (sym) % scm_symhash_dim;
+ scm_sizet hash1;
+ scm_sizet hash2;
SCM_DEFER_INTS;
- for (lsym = SCM_VELTS (scm_symhash)[hash]; SCM_NIMP (lsym); lsym =
SCM_CDR (lsym))
+ hash1 = SCM_SYMBOL_HASH (sym) % SCM_VECTOR_LENGTH (scm_symhash);
+ for (lsym = SCM_VELTS (scm_symhash)[hash1]; SCM_NIMP (lsym); lsym =
SCM_CDR (lsym))
{
- z = SCM_CAR (lsym);
+ SCM z = SCM_CAR (lsym);
if (SCM_EQ_P (SCM_CAR (z), sym))
{
SCM_ALLOW_INTS;
@@ -156,19 +146,20 @@
}
}
- for (lsym = *(lsymp = &SCM_VELTS (scm_weak_symhash)[hash]);
+ hash2 = SCM_SYMBOL_HASH (sym) % SCM_VECTOR_LENGTH (scm_weak_symhash);
+ for (lsym = *(lsymp = &SCM_VELTS (scm_weak_symhash)[hash2]);
SCM_NIMP (lsym);
lsym = *(lsymp = SCM_CDRLOC (lsym)))
{
- z = SCM_CAR (lsym);
+ SCM z = SCM_CAR (lsym);
if (SCM_EQ_P (SCM_CAR (z), sym))
{
if (SCM_NFALSEP (definep))
{
/* Move handle from scm_weak_symhash to scm_symhash. */
*lsymp = SCM_CDR (lsym);
- SCM_SETCDR (lsym, SCM_VELTS(scm_symhash)[hash]);
- SCM_VELTS(scm_symhash)[hash] = lsym;
+ SCM_SETCDR (lsym, SCM_VELTS(scm_symhash)[hash1]);
+ SCM_VELTS(scm_symhash)[hash1] = lsym;
}
SCM_ALLOW_INTS;
return z;
@@ -363,7 +354,7 @@
SCM lsym;
scm_sizet len = strlen (name);
scm_sizet raw_hash = scm_string_hash ((unsigned char *) name, len);
- scm_sizet hash = raw_hash % scm_symhash_dim;
+ scm_sizet hash = raw_hash % SCM_VECTOR_LENGTH (scm_symhash);
SCM_NEWCELL2 (lsym);
SCM_SET_SYMBOL_CHARS (lsym, name);
Index: guile/guile-core/libguile/symbols.h
diff -u guile/guile-core/libguile/symbols.h:1.45
guile/guile-core/libguile/symbols.h:1.46
--- guile/guile-core/libguile/symbols.h:1.45 Tue Nov 28 08:37:40 2000
+++ guile/guile-core/libguile/symbols.h Fri Dec 8 05:41:56 2000
@@ -50,8 +50,6 @@
#include "libguile/__scm.h"
-extern int scm_symhash_dim;
-
/* SCM_SYMBOL_LENGTH(SYM) is the length of SYM's name in characters, and
* SCM_SYMBOL_CHARS(SYM) is the address of the first character of SYM's name.
*/