From: Ian Lance Taylor Date: Thu, 9 Jul 2009 23:29:55 +0000 (+0000) Subject: * merge.cc (Object_merge_map::initialize_input_to_output_map): X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=37c3b7b014271f52b30a7281eebc1f848bb7e66f;p=binutils-gdb.git * merge.cc (Object_merge_map::initialize_input_to_output_map): Reserve space in the hash table. --- 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 + + * merge.cc (Object_merge_map::initialize_input_to_output_map): + Reserve space in the hash table. + 2009-07-06 Mikolaj Zalewski * 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)