From: hniksic Date: Sat, 8 Nov 2003 03:42:58 +0000 (-0800) Subject: [svn] Name the source of the integer hash function. X-Git-Tag: v1.13~1449 X-Git-Url: http://sjero.net/git/?p=wget;a=commitdiff_plain;h=85ff32caebeaaade7bb98d09e321a965cad14e07 [svn] Name the source of the integer hash function. --- diff --git a/src/hash.c b/src/hash.c index 2c8d1351..49979c75 100644 --- a/src/hash.c +++ b/src/hash.c @@ -175,9 +175,7 @@ struct hash_table { for (; NON_EMPTY (mp); mp = NEXT_MAPPING (mp, mappings, size)) /* Return the position of KEY in hash table SIZE large, hash function - being HASHFUN. #### Some implementations multiply HASHFUN's output - with the table's "golden ratio" to get better spreading of keys. - I'm not sure if that is necessary with our hash functions. */ + being HASHFUN. */ #define HASH_POSITION(key, hashfun, size) ((hashfun) (key) % size) /* Find a prime near, but greather than or equal to SIZE. Of course, @@ -639,9 +637,14 @@ make_nocase_string_hash_table (int items) return hash_table_new (items, string_hash_nocase, string_cmp_nocase); } -/* Hashing of pointers. Used for hash tables that are keyed by - pointer identity. (Common Lisp calls them EQ hash tables, and Java - calls them IdentityHashMaps.) */ +/* Hashing of numeric values, such as pointers and integers. Used for + hash tables that are keyed by pointer identity. (Common Lisp calls + them EQ hash tables, and Java calls them IdentityHashMaps.) + + This implementation is the Robert Jenkins' 32 bit Mix Function, + with a simple adaptation for 64-bit values. It offers excellent + spreading of values and doesn't need to know the hash table size to + work (unlike the very popular Knuth's multiplication hash). */ static unsigned long ptrhash (const void *ptr)