diff options
author | Rafael Ávila de Espíndola <rafael.espindola@gmail.com> | 2015-06-01 22:47:20 -0400 |
---|---|---|
committer | Rafael Ávila de Espíndola <rafael.espindola@gmail.com> | 2015-06-01 22:47:20 -0400 |
commit | 400f89447b72cbd48a2fc8b016a09cbc4e590d81 (patch) | |
tree | eeaaf15255ef967ae2120c96520ac8b5b755e096 /gold/merge.cc | |
parent | d78b6450515fb163b00bc8874a15469df797ef17 (diff) | |
download | gdb-400f89447b72cbd48a2fc8b016a09cbc4e590d81.zip gdb-400f89447b72cbd48a2fc8b016a09cbc4e590d81.tar.gz gdb-400f89447b72cbd48a2fc8b016a09cbc4e590d81.tar.bz2 |
Use a std::vector instead of a std::map to hold Input_merge_map.
A std::map is hardly the best data structure for a small map from small
integers.
Diffstat (limited to 'gold/merge.cc')
-rw-r--r-- | gold/merge.cc | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/gold/merge.cc b/gold/merge.cc index d395312..50d13af 100644 --- a/gold/merge.cc +++ b/gold/merge.cc @@ -49,13 +49,13 @@ const Object_merge_map::Input_merge_map* Object_merge_map::get_input_merge_map(unsigned int shndx) const { gold_assert(shndx != -1U); - if (shndx == this->first_shnum_) - return &this->first_map_; - if (shndx == this->second_shnum_) - return &this->second_map_; - Section_merge_maps::const_iterator p = this->section_merge_maps_.find(shndx); - if (p != this->section_merge_maps_.end()) - return p->second; + const Section_merge_maps &maps = this->section_merge_maps_; + for (Section_merge_maps::const_iterator i = maps.begin(), e = maps.end(); + i != e; ++i) + { + if (i->first == shndx) + return i->second; + } return NULL; } @@ -73,23 +73,10 @@ Object_merge_map::get_or_make_input_merge_map( return map; } - // We need to create a new entry. - if (this->first_shnum_ == -1U) - { - this->first_shnum_ = shndx; - this->first_map_.output_data = output_data; - return &this->first_map_; - } - if (this->second_shnum_ == -1U) - { - this->second_shnum_ = shndx; - this->second_map_.output_data = output_data; - return &this->second_map_; - } - Input_merge_map* new_map = new Input_merge_map; new_map->output_data = output_data; - this->section_merge_maps_[shndx] = new_map; + Section_merge_maps &maps = this->section_merge_maps_; + maps.push_back(std::make_pair(shndx, new_map)); return new_map; } |