aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2009-06-21 17:13:08 +0000
committerDJ Delorie <dj@redhat.com>2009-06-21 17:13:08 +0000
commit483d7cf40a669633cecaf6507b1de673befb6b84 (patch)
treeb63fda7c9240f7afbbf17f158e2a8848d04055fa
parent102fd3cc91dcb092f1e4882fe085902a889f9700 (diff)
downloadgdb-483d7cf40a669633cecaf6507b1de673befb6b84.zip
gdb-483d7cf40a669633cecaf6507b1de673befb6b84.tar.gz
gdb-483d7cf40a669633cecaf6507b1de673befb6b84.tar.bz2
merge from gcc
-rw-r--r--libiberty/ChangeLog5
-rw-r--r--libiberty/hashtab.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index f5ac783..eb7c913 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -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
diff --git a/libiberty/hashtab.c b/libiberty/hashtab.c
index bf34a6d..3e64921 100644
--- a/libiberty/hashtab.c
+++ b/libiberty/hashtab.c
@@ -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);