Cleanup on the unified section list changes. Main changes are:
- ObjectFile::GetSymtab() and ObjectFile::ClearSymtab() no longer takes any flags
- Module coordinates with the object files and contain a unified section list so that object file and symbol file can share sections when they need to, yet contain their own sections.
Other cleanups:
- Fixed Symbol::GetByteSize() to not have the symbol table compute the byte sizes on the fly
- Modified the ObjectFileMachO class to compute symbol sizes all at once efficiently
- Modified the Symtab class to store a file address lookup table for more efficient lookups
- Removed Section::Finalize() and SectionList::Finalize() as they did nothing
- Improved performance of the detection of symbol files that have debug maps by excluding stripped files and core files, debug files, object files and stubs
- Added the ability to tell if an ObjectFile has been stripped with ObjectFile::IsStripped() (used this for the above performance improvement)
llvm-svn: 185990
diff --git a/lldb/source/Core/Section.cpp b/lldb/source/Core/Section.cpp
index cb565f0..492abec 100644
--- a/lldb/source/Core/Section.cpp
+++ b/lldb/source/Core/Section.cpp
@@ -292,8 +292,6 @@
#pragma mark SectionList
SectionList::SectionList () :
- m_changed(false),
- m_revision_id(0),
m_sections()
{
}
@@ -303,22 +301,17 @@
{
}
-bool
-SectionList::Copy (SectionList *dest_section_list)
+SectionList &
+SectionList::operator = (const SectionList& rhs)
{
- if (dest_section_list)
- {
- dest_section_list->m_sections = m_sections;
- dest_section_list->m_changed = true;
- return true;
- }
- return false;
+ if (this != &rhs)
+ m_sections = rhs.m_sections;
+ return *this;
}
size_t
SectionList::AddSection (const lldb::SectionSP& section_sp)
{
- m_changed = true;
assert (section_sp.get());
size_t section_index = m_sections.size();
m_sections.push_back(section_sp);
@@ -331,7 +324,6 @@
{
if (idx < m_sections.size())
{
- m_changed = true;
m_sections.erase (m_sections.begin() + idx);
return true;
}
@@ -361,7 +353,6 @@
size_t sect_idx = FindSectionIndex (sect_sp.get());
if (sect_idx == UINT32_MAX)
{
- m_changed = true;
sect_idx = AddSection (sect_sp);
}
return sect_idx;
@@ -375,7 +366,6 @@
{
if ((*sect_iter)->GetID() == sect_id)
{
- m_changed = true;
*sect_iter = sect_sp;
return true;
}
@@ -552,22 +542,3 @@
}
return count;
}
-
-void
-SectionList::Finalize ()
-{
- for (const_iterator si = m_sections.begin(), se = m_sections.end();
- si != se;
- ++si)
- {
- Section *sect = si->get();
-
- sect->GetChildren().Finalize();
- }
-
- if (m_changed)
- {
- m_revision_id++;
- m_changed = false;
- }
-}