]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ggc-common.c (ggc_mark_roots): Use htab_traverse_noresize.
authorJan Hubicka <jh@suse.cz>
Mon, 17 Mar 2003 17:59:58 +0000 (18:59 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Mon, 17 Mar 2003 17:59:58 +0000 (17:59 +0000)
* 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

gcc/ChangeLog
gcc/ggc-common.c
include/ChangeLog
include/hashtab.h
libiberty/ChangeLog
libiberty/hashtab.c

index 905cb24b32f487f9855b9a8e6b0c455649534e38..40f8a7c7762a624ccaa1b16869b80e85f277caef 100644 (file)
@@ -1,3 +1,7 @@
+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>
 
        * function.c (assign_parms): For a struct value address passed as
index 8e12d56ee805f30de74397ad7e1daed66be791ac..b1c3c61bb2cc1f687570c92c618094638ba14522 100644 (file)
@@ -113,7 +113,7 @@ ggc_mark_roots ()
       if (*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);
        }
 }
index 058e782ea5eedff5bb4993b8392864aae037a28f..241529c35d9ea9cebb13767b372fce8c7f726355 100644 (file)
@@ -1,3 +1,7 @@
+2003-03-17  Jan Hubicka  <jh@suse.cz>
+
+       * hashtab.h (htab_traverse_noresize): Declare.
+
 2003-02-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * libiberty.h: Document return value of physmem routines.
index 4995a9a10e05bed4740c29e4ec2b39782d78c17d..7acb5eb2859218bda4646114ffdfe49bc9cb4666 100644 (file)
@@ -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_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_elements   PARAMS ((htab_t));
index 052d99f457585cd7dd1ddb989636602ec3a167a2..d4b84d36826d6d5f17e0ecb8dc17b35aeb8f905f 100644 (file)
@@ -1,3 +1,8 @@
+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>
 
        * hashtab.c (htab_expand): Fix warning.
index ebaa43b2c5083072c1cfb7bfb4c4d140885e7afc..2f8dfd6c581a5ea4d101c832d73590323991ac7a 100644 (file)
@@ -603,7 +603,7 @@ htab_clear_slot (htab, slot)
    argument.  */
 
 void
-htab_traverse (htab, callback, info)
+htab_traverse_noresize (htab, callback, info)
      htab_t htab;
      htab_trav callback;
      PTR info;
@@ -611,9 +611,6 @@ htab_traverse (htab, callback, info)
   PTR *slot;
   PTR *limit;
 
-  if ((htab->n_elements - htab->n_deleted) * 8 < htab->size)
-    htab_expand (htab);
-
   slot = htab->entries;
   limit = slot + htab->size;
 
@@ -628,6 +625,24 @@ htab_traverse (htab, callback, info)
   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. */
 
 size_t