OSDN Git Service

* hashtab.c (htab_traverse): Don't call htab_expand for
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 21 Jun 2009 09:37:31 +0000 (09:37 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 21 Jun 2009 09:37:31 +0000 (09:37 +0000)
nearly empty hashtabs with sizes 7, 13 or 31.

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

libiberty/ChangeLog
libiberty/hashtab.c

index f5ac783..eb7c913 100644 (file)
@@ -1,3 +1,8 @@
+2009-06-21  Jakub Jelinek  <jakub@redhat.com>
+
+       * hashtab.c (htab_traverse): Don't call htab_expand for
+       nearly empty hashtabs with sizes 7, 13 or 31.
+
 2009-06-16  Nick Clifton  <nickc@redhat.com>
 
        PR 10197
index bf34a6d..3e64921 100644 (file)
@@ -1,5 +1,5 @@
 /* An expandable hash tables datatype.  
-   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2009
    Free Software Foundation, Inc.
    Contributed by Vladimir Makarov (vmakarov@cygnus.com).
 
@@ -759,7 +759,8 @@ htab_traverse_noresize (htab_t htab, htab_trav callback, PTR info)
 void
 htab_traverse (htab_t htab, htab_trav callback, PTR info)
 {
-  if (htab_elements (htab) * 8 < htab_size (htab))
+  size_t size = htab_size (htab);
+  if (htab_elements (htab) * 8 < size && size > 32)
     htab_expand (htab);
 
   htab_traverse_noresize (htab, callback, info);