summaryrefslogtreecommitdiff
path: root/libguile/eq.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-12-05 10:07:07 +0100
committerAndy Wingo <wingo@pobox.com>2009-12-05 10:07:07 +0100
commitc99de5aa275b15af207c0dba9717d6b865684fc4 (patch)
treed1c78809bf4971a152fd3cd46bf77cf29a2f5621 /libguile/eq.c
parent314b87163eac1358923cb84e7f2c87d06aa03756 (diff)
downloadguile-c99de5aa275b15af207c0dba9717d6b865684fc4.tar.gz
hash tables have a tc7
* libguile/tags.h (scm_tc7_hashtable): Allocate a tc7 for hashtables. * libguile/hashtab.h: Adjust macros accordingly. (scm_i_hashtable_print, scm_i_hashtable_equal_p): New internal functions. (scm_hashtab_prehistory): Remove, no more need for this. * libguile/hashtab.c (scm_hash_fn_remove_x): Fix a longstanding bug. (make_hash_table): Adapt to the new hash table representation. * libguile/eq.c (scm_equal_p) * libguile/evalext.c (scm_self_evaluating_p) * libguile/print.c (iprin1) * libguile/gc.c (scm_i_tag_name): Add some tc7_hashtab cases. * libguile/init.c: Remove unused environments init functions. Remove call to hashtab_prehistory. * libguile/goops.h (scm_class_hashtable) * libguile/goops.c (scm_class_of, create_standard_classes): Have to make a class for hash tables manually, because they aren't smobs any more.
Diffstat (limited to 'libguile/eq.c')
-rw-r--r--libguile/eq.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libguile/eq.c b/libguile/eq.c
index 422f1a53d..9aa86a509 100644
--- a/libguile/eq.c
+++ b/libguile/eq.c
@@ -30,6 +30,7 @@
#include "libguile/smob.h"
#include "libguile/arrays.h"
#include "libguile/vectors.h"
+#include "libguile/hashtab.h"
#include "libguile/bytevectors.h"
#include "libguile/struct.h"
@@ -342,6 +343,9 @@ scm_equal_p (SCM x, SCM y)
case scm_tc7_vector:
case scm_tc7_wvect:
return scm_i_vector_equal_p (x, y);
+
+ case scm_tc7_hashtable:
+ return scm_i_hashtable_equal_p (x, y);
}
/* Check equality between structs of equal type (see cell-type test above). */
if (SCM_STRUCTP (x))