* mips.h: Correct comment typo.
[binutils-gdb.git] / libiberty / hashtab.c
index a0cb5a75820b559b1f50bf19070cd97bf4f21803..2f8dfd6c581a5ea4d101c832d73590323991ac7a 100644 (file)
@@ -376,8 +376,8 @@ htab_expand (htab)
   /* 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)
+      || ((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;
@@ -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