diff options
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 5 | ||||
-rw-r--r-- | gold/merge.cc | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 70349e0d1dd..974a49f1505 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2009-07-09 Ian Lance Taylor <iant@google.com> + + * merge.cc (Object_merge_map::initialize_input_to_output_map): + Reserve space in the hash table. + 2009-07-06 Mikolaj Zalewski <mikolajz@google.com> * fileread.cc (File_read::get_mtime): New method. diff --git a/gold/merge.cc b/gold/merge.cc index 25ecc40c0e1..3d9692124a0 100644 --- a/gold/merge.cc +++ b/gold/merge.cc @@ -204,6 +204,12 @@ Object_merge_map::initialize_input_to_output_map( Input_merge_map* map = this->get_input_merge_map(shndx); gold_assert(map != NULL); + gold_assert(initialize_map->empty()); + // We know how many entries we are going to add. + // reserve_unordered_map takes an expected count of buckets, not a + // count of elements, so double it to try to reduce collisions. + reserve_unordered_map(initialize_map, map->entries.size() * 2); + for (Input_merge_map::Entries::const_iterator p = map->entries.begin(); p != map->entries.end(); ++p) |