diff options
author | Greg Clayton <gclayton@apple.com> | 2013-03-04 21:46:16 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2013-03-04 21:46:16 +0000 |
commit | 9422dd64f870dd3344ca0e5909872765b517fc11 (patch) | |
tree | 24664b0ee18b5f597f8b8a0f7f18bfe14487adee /lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h | |
parent | 427b404d0a456953d31d4f5d8abc5b3ac112036b (diff) | |
download | bcm5719-llvm-9422dd64f870dd3344ca0e5909872765b517fc11.tar.gz bcm5719-llvm-9422dd64f870dd3344ca0e5909872765b517fc11.zip |
<rdar://problem/13338643>
DWARF with .o files now uses 40-60% less memory!
Big fixes include:
- Change line table internal representation to contain "file addresses". Since each line table is owned by a compile unit that is owned by a module, it makes address translation into lldb_private::Address easy to do when needed.
- Removed linked address members/methods from lldb_private::Section and lldb_private::Address
- lldb_private::LineTable can now relink itself using a FileRangeMap to make it easier to re-link line tables in the future
- Added ObjectFile::ClearSymtab() so that we can get rid of the object file symbol tables after we parse them once since they are not needed and kept memory allocated for no reason
- Moved the m_sections_ap (std::auto_ptr to section list) and m_symtab_ap (std::auto_ptr to the lldb_private::Symtab) out of each of the ObjectFile subclasses and put it into lldb_private::ObjectFile.
- Changed how the debug map is parsed and stored to be able to:
- Lazily parse the debug map for each object file
- not require the address map for a .o file until debug information is linked for a .o file
llvm-svn: 176454
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h')
-rw-r--r-- | lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h index 1d0443731d9..c4a15407c4e 100644 --- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h +++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h @@ -146,8 +146,6 @@ public: protected: llvm::MachO::mach_header m_header; - mutable std::auto_ptr<lldb_private::SectionList> m_sections_ap; - mutable std::auto_ptr<lldb_private::Symtab> m_symtab_ap; static const lldb_private::ConstString &GetSegmentNameTEXT(); static const lldb_private::ConstString &GetSegmentNameDATA(); static const lldb_private::ConstString &GetSegmentNameOBJC(); @@ -157,7 +155,7 @@ protected: llvm::MachO::dysymtab_command m_dysymtab; std::vector<llvm::MachO::segment_command_64> m_mach_segments; std::vector<llvm::MachO::section_64> m_mach_sections; - typedef lldb_private::RangeArray<uint32_t, uint32_t, 1> FileRangeArray; + typedef lldb_private::RangeVector<uint32_t, uint32_t> FileRangeArray; lldb_private::Address m_entry_point_address; FileRangeArray m_thread_context_offsets; bool m_thread_context_offsets_valid; |