OSDN Git Service

* ggc-common.c (ggc_mark_roots): Use htab_traverse_noresize.
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Mar 2003 17:59:58 +0000 (17:59 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Mar 2003 17:59:58 +0000 (17:59 +0000)
* hashtab.h (htab_traverse_noresize): Declare.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64496 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 905cb24..40f8a7c 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 8e12d56..b1c3c61 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 058e782..241529c 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 4995a9a..7acb5eb 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 052d99f..d4b84d3 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 ebaa43b..2f8dfd6 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