Commit dbccdc42 by Jan Hubicka Committed by Jan Hubicka

ggc-common.c (ggc_mark_roots): Use htab_traverse_noresize.

	* ggc-common.c (ggc_mark_roots): Use htab_traverse_noresize.

	* hashtab.h (htab_traverse_noresize): Declare.

	* hashtab.c (htab_traverse_noresize): Break out from ...
	* hashtab.c (htab_traverse): ... here.

From-SVN: r64496
parent ec20aa6c
Mon Mar 17 18:57:01 CET 2003 Jan Hubicka <jh@suse.cz>
* ggc-common.c (ggc_mark_roots): Use htab_traverse_noresize.
2003-03-17 Olivier Hainque <hainque@act-europe.fr> 2003-03-17 Olivier Hainque <hainque@act-europe.fr>
* function.c (assign_parms): For a struct value address passed as * function.c (assign_parms): For a struct value address passed as
......
...@@ -113,7 +113,7 @@ ggc_mark_roots () ...@@ -113,7 +113,7 @@ ggc_mark_roots ()
if (*cti->base) if (*cti->base)
{ {
ggc_set_mark (*cti->base); ggc_set_mark (*cti->base);
htab_traverse (*cti->base, ggc_htab_delete, (PTR) cti); htab_traverse_noresize (*cti->base, ggc_htab_delete, (PTR) cti);
ggc_set_mark ((*cti->base)->entries); ggc_set_mark ((*cti->base)->entries);
} }
} }
......
2003-03-17 Jan Hubicka <jh@suse.cz>
* hashtab.h (htab_traverse_noresize): Declare.
2003-02-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 2003-02-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* libiberty.h: Document return value of physmem routines. * libiberty.h: Document return value of physmem routines.
......
...@@ -168,6 +168,7 @@ extern void htab_clear_slot PARAMS ((htab_t, void **)); ...@@ -168,6 +168,7 @@ extern void htab_clear_slot PARAMS ((htab_t, void **));
extern void htab_remove_elt PARAMS ((htab_t, void *)); extern void htab_remove_elt PARAMS ((htab_t, void *));
extern void htab_traverse PARAMS ((htab_t, htab_trav, void *)); extern void htab_traverse PARAMS ((htab_t, htab_trav, void *));
extern void htab_traverse_noresize PARAMS ((htab_t, htab_trav, void *));
extern size_t htab_size PARAMS ((htab_t)); extern size_t htab_size PARAMS ((htab_t));
extern size_t htab_elements PARAMS ((htab_t)); extern size_t htab_elements PARAMS ((htab_t));
......
2003-17-03 Jan Hubicka <jh@suse.cz>
* hashtab.c (htab_traverse_noresize): Break out from ...
* hashtab.c (htab_traverse): ... here.
2003-12-03 Jan Hubicka <jh@suse.cz> 2003-12-03 Jan Hubicka <jh@suse.cz>
* hashtab.c (htab_expand): Fix warning. * hashtab.c (htab_expand): Fix warning.
......
...@@ -603,7 +603,7 @@ htab_clear_slot (htab, slot) ...@@ -603,7 +603,7 @@ htab_clear_slot (htab, slot)
argument. */ argument. */
void void
htab_traverse (htab, callback, info) htab_traverse_noresize (htab, callback, info)
htab_t htab; htab_t htab;
htab_trav callback; htab_trav callback;
PTR info; PTR info;
...@@ -611,9 +611,6 @@ htab_traverse (htab, callback, info) ...@@ -611,9 +611,6 @@ htab_traverse (htab, callback, info)
PTR *slot; PTR *slot;
PTR *limit; PTR *limit;
if ((htab->n_elements - htab->n_deleted) * 8 < htab->size)
htab_expand (htab);
slot = htab->entries; slot = htab->entries;
limit = slot + htab->size; limit = slot + htab->size;
...@@ -628,6 +625,24 @@ htab_traverse (htab, callback, info) ...@@ -628,6 +625,24 @@ htab_traverse (htab, callback, info)
while (++slot < limit); while (++slot < limit);
} }
/* Like htab_traverse_noresize, but does resize the table when it is
too empty to improve effectivity of subsequent calls. */
void
htab_traverse (htab, callback, info)
htab_t htab;
htab_trav callback;
PTR info;
{
PTR *slot;
PTR *limit;
if ((htab->n_elements - htab->n_deleted) * 8 < htab->size)
htab_expand (htab);
htab_traverse_noresize (htab, callback, info);
}
/* Return the current size of given hash table. */ /* Return the current size of given hash table. */
size_t size_t
......
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