Remove a std::map and std::set that show up in LLD profiles
authorReid Kleckner <rnk@google.com>
Mon, 13 Nov 2017 18:38:53 +0000 (18:38 +0000)
committerReid Kleckner <rnk@google.com>
Mon, 13 Nov 2017 18:38:53 +0000 (18:38 +0000)
commit5883989e514470dee9bcc411137e00bf1a888b65
treeabadeaaacb201b2893db5a3f5fcb460fcf479509
parentc2dcdd852b30251e2f00e814b176cc605560c807
Remove a std::map and std::set that show up in LLD profiles

For GC roots, add a bit to SymbolBody to ensure that we don't add the
same root twice, and switch to a vector. In addition to being faster,
this may also fix some latent non-determinism. We iterate the GCRoot
list later and it the order should be deterministic.

For fixupExports, we can just use DenseMap. This is a simple string
uniquing task, and we don't iterate the map.

Reviewers: ruiu

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D39609

llvm-svn: 318072
lld/COFF/Config.h
lld/COFF/Driver.cpp
lld/COFF/Symbols.h