diff options
Diffstat (limited to 'lldb/source/Symbol/Symtab.cpp')
| -rw-r--r-- | lldb/source/Symbol/Symtab.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lldb/source/Symbol/Symtab.cpp b/lldb/source/Symbol/Symtab.cpp index 19c1fee2bb38..c67955523bfb 100644 --- a/lldb/source/Symbol/Symtab.cpp +++ b/lldb/source/Symbol/Symtab.cpp @@ -997,10 +997,15 @@ void Symtab::InitAddressIndexes() { } } -void Symtab::CalculateSymbolSizes() { +void Symtab::Finalize() { std::lock_guard<std::recursive_mutex> guard(m_mutex); - // Size computation happens inside InitAddressIndexes. + // Calculate the size of symbols inside InitAddressIndexes. InitAddressIndexes(); + // Shrink to fit the symbols so we don't waste memory + if (m_symbols.capacity() > m_symbols.size()) { + collection new_symbols(m_symbols.begin(), m_symbols.end()); + m_symbols.swap(new_symbols); + } } Symbol *Symtab::FindSymbolAtFileAddress(addr_t file_addr) { |
