merge from gcc
authorDJ Delorie <dj@redhat.com>
Mon, 17 Mar 2003 18:01:07 +0000 (18:01 +0000)
committerDJ Delorie <dj@redhat.com>
Mon, 17 Mar 2003 18:01:07 +0000 (18:01 +0000)
include/ChangeLog
include/hashtab.h
libiberty/ChangeLog
libiberty/hashtab.c

index c98e61e..64e73c6 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 a45e537..667d93b 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