aboutsummaryrefslogtreecommitdiffstats
path: root/src/ChangeLog
diff options
context:
space:
mode:
authorPaul Eggert2011-05-30 23:05:00 -0700
committerPaul Eggert2011-05-30 23:05:00 -0700
commit0de4bb688da4961269edab53dc0e0d5a30c01a44 (patch)
tree10e3c4d22f03496bf5b8fc4a41ee04cfcc52e33d /src/ChangeLog
parentb9627cfb1d5b5b0914525a19cd9edb06f91a1665 (diff)
downloademacs-0de4bb688da4961269edab53dc0e0d5a30c01a44.tar.gz
emacs-0de4bb688da4961269edab53dc0e0d5a30c01a44.zip
Remove arbitrary limit of 2**31 entries in hash tables.
* category.c (hash_get_category_set): Use 'EMACS_UINT' and 'EMACS_INT' for hashes and hash indexes, instead of 'unsigned' and 'int'. * ccl.c (ccl_driver): Likewise. * charset.c (Fdefine_charset_internal): Likewise. * charset.h (struct charset.hash_index): Likewise. * composite.c (get_composition_id, gstring_lookup_cache): (composition_gstring_put_cache): Likewise. * composite.h (struct composition.hash_index): Likewise. * dispextern.h (struct image.hash): Likewise. * fns.c (next_almost_prime, larger_vector, cmpfn_eql): (cmpfn_equal, cmpfn_user_defined, hashfn_eq, hashfn_eql): (hashfn_equal, hashfn_user_defined, make_hash_table): (maybe_resize_hash_table, hash_lookup, hash_put): (hash_remove_from_table, hash_clear, sweep_weak_table, SXHASH_COMBINE): (sxhash_string, sxhash_list, sxhash_vector, sxhash_bool_vector): (Fsxhash, Fgethash, Fputhash, Fmaphash): Likewise. * image.c (make_image, search_image_cache, lookup_image): (xpm_put_color_table_h): Likewise. * lisp.h (struct Lisp_Hash_Table): Likewise, for 'count', 'cmpfn', and 'hashfn' members. * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion): Likewise. * print.c (print): Likewise. * alloc.c (allocate_vectorlike): Check for overflow in vector size calculations. * ccl.c (ccl_driver): Check for overflow when converting EMACS_INT to int. * fns.c, image.c: Remove unnecessary static decls that would otherwise need to be updated by these changes. * fns.c (make_hash_table, maybe_resize_hash_table): Check for integer overflow with large hash tables. (make_hash_table, maybe_resize_hash_table, Fmake_hash_table): Prefer the faster XFLOAT_DATA to XFLOATINT where either will do. (SXHASH_REDUCE): New macro. (sxhash_string, sxhash_list, sxhash_vector, sxhash_bool_vector): Use it instead of discarding useful hash info with large hash values. (sxhash_float): New function. (sxhash): Use it. No more need for "& INTMASK" due to above changes. * lisp.h (FIXNUM_BITS): New macro, useful for SXHASH_REDUCE etc. (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM, INTMASK): Rewrite to use FIXNUM_BITS, as this simplifies things. (next_almost_prime, larger_vector, sxhash, hash_lookup, hash_put): Adjust signatures to match updated version of code. (consing_since_gc): Now EMACS_INT, since a single hash table can use more than INT_MAX bytes.
Diffstat (limited to 'src/ChangeLog')
-rw-r--r--src/ChangeLog49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index fa8022b0d4d..029585b803f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,54 @@
12011-05-31 Paul Eggert <eggert@cs.ucla.edu> 12011-05-31 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 Remove arbitrary limit of 2**31 entries in hash tables.
4 * category.c (hash_get_category_set): Use 'EMACS_UINT' and 'EMACS_INT'
5 for hashes and hash indexes, instead of 'unsigned' and 'int'.
6 * ccl.c (ccl_driver): Likewise.
7 * charset.c (Fdefine_charset_internal): Likewise.
8 * charset.h (struct charset.hash_index): Likewise.
9 * composite.c (get_composition_id, gstring_lookup_cache):
10 (composition_gstring_put_cache): Likewise.
11 * composite.h (struct composition.hash_index): Likewise.
12 * dispextern.h (struct image.hash): Likewise.
13 * fns.c (next_almost_prime, larger_vector, cmpfn_eql):
14 (cmpfn_equal, cmpfn_user_defined, hashfn_eq, hashfn_eql):
15 (hashfn_equal, hashfn_user_defined, make_hash_table):
16 (maybe_resize_hash_table, hash_lookup, hash_put):
17 (hash_remove_from_table, hash_clear, sweep_weak_table, SXHASH_COMBINE):
18 (sxhash_string, sxhash_list, sxhash_vector, sxhash_bool_vector):
19 (Fsxhash, Fgethash, Fputhash, Fmaphash): Likewise.
20 * image.c (make_image, search_image_cache, lookup_image):
21 (xpm_put_color_table_h): Likewise.
22 * lisp.h (struct Lisp_Hash_Table): Likewise, for 'count', 'cmpfn',
23 and 'hashfn' members.
24 * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
25 Likewise.
26 * print.c (print): Likewise.
27 * alloc.c (allocate_vectorlike): Check for overflow in vector size
28 calculations.
29 * ccl.c (ccl_driver): Check for overflow when converting EMACS_INT
30 to int.
31 * fns.c, image.c: Remove unnecessary static decls that would otherwise
32 need to be updated by these changes.
33 * fns.c (make_hash_table, maybe_resize_hash_table): Check for integer
34 overflow with large hash tables.
35 (make_hash_table, maybe_resize_hash_table, Fmake_hash_table):
36 Prefer the faster XFLOAT_DATA to XFLOATINT where either will do.
37 (SXHASH_REDUCE): New macro.
38 (sxhash_string, sxhash_list, sxhash_vector, sxhash_bool_vector):
39 Use it instead of discarding useful hash info with large hash values.
40 (sxhash_float): New function.
41 (sxhash): Use it. No more need for "& INTMASK" due to above changes.
42 * lisp.h (FIXNUM_BITS): New macro, useful for SXHASH_REDUCE etc.
43 (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM, INTMASK): Rewrite
44 to use FIXNUM_BITS, as this simplifies things.
45 (next_almost_prime, larger_vector, sxhash, hash_lookup, hash_put):
46 Adjust signatures to match updated version of code.
47 (consing_since_gc): Now EMACS_INT, since a single hash table can
48 use more than INT_MAX bytes.
49
502011-05-31 Paul Eggert <eggert@cs.ucla.edu>
51
3 Use 'inline', not 'INLINE'. 52 Use 'inline', not 'INLINE'.
4 <http://lists.gnu.org/archive/html/emacs-devel/2011-05/msg00914.html> 53 <http://lists.gnu.org/archive/html/emacs-devel/2011-05/msg00914.html>
5 * alloc.c, fontset.c (INLINE): Remove. 54 * alloc.c, fontset.c (INLINE): Remove.