Commit 0a8e3de3 by Jan Hubicka Committed by Jan Hubicka

hashtab.c (htab_expand): Compute the size of hashtable based on the number of…

hashtab.c (htab_expand): Compute the size of hashtable based on the number of elements actually used.

	* hashtab.c (htab_expand): Compute the size of hashtable based
	on the number of elements actually used.
	(htab_traverse):  Call htab_expand when table is too empty.

From-SVN: r64246
parent 32cf27e5
2003-12-03 Jan Hubicka <jh@suse.cz>
* hashtab.c (htab_expand): Compute the size of hashtable based
on the number of elements actually used.
(htab_traverse): Call htab_expand when table is too empty.
2003-03-11 Carlo Wood <carlo@gnu.org>
* cplus-dem.c (demangle_integral_value): Correction to reflect
......
......@@ -373,7 +373,14 @@ htab_expand (htab)
oentries = htab->entries;
olimit = oentries + htab->size;
nsize = higher_prime_number (htab->size * 2);
/* Resize only when table after removal of unused elements is either
too full or too empty. */
if ((htab->n_elements - htab->n_deleted) * 2 > htab->size
|| (htab->n_elements - htab->n_deleted) * 8 < htab->size
&& htab->size > 32)
nsize = higher_prime_number ((htab->n_elements - htab->n_deleted) * 2);
else
nsize = htab->size;
if (htab->alloc_with_arg_f != NULL)
nentries = (PTR *) (*htab->alloc_with_arg_f) (htab->alloc_arg, nsize,
......@@ -601,8 +608,14 @@ htab_traverse (htab, callback, info)
htab_trav callback;
PTR info;
{
PTR *slot = htab->entries;
PTR *limit = slot + htab->size;
PTR *slot;
PTR *limit;
if ((htab->n_elements - htab->n_deleted) * 8 < htab->size)
htab_expand (htab);
slot = htab->entries;
limit = slot + htab->size;
do
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment