From e40ac74dacda99ff6330945f0f105252b7c28c9c Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Mon, 23 Dec 2019 15:45:26 +0100 Subject: [lldb] Remove DWARFUnit::AppendDIEsWithTag This function is not very useful, as it's forcing a materialization of the returned DIEs, and calling it is not substantially simpler than just iterating over the DIEs manually. Delete it, and rewrite the single caller. --- lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp | 18 ------------------ lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h | 2 -- .../Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp | 10 ++++++---- 3 files changed, 6 insertions(+), 24 deletions(-) (limited to 'lldb/source/Plugins/SymbolFile/DWARF') diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp index 3ced8d7f89b..b71595b1448 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp @@ -399,24 +399,6 @@ DWARFDIE DWARFUnit::LookupAddress(const dw_addr_t address) { return DWARFDIE(); } -size_t DWARFUnit::AppendDIEsWithTag(const dw_tag_t tag, - std::vector &dies, - uint32_t depth) const { - size_t old_size = dies.size(); - { - llvm::sys::ScopedReader lock(m_die_array_mutex); - DWARFDebugInfoEntry::const_iterator pos; - DWARFDebugInfoEntry::const_iterator end = m_die_array.end(); - for (pos = m_die_array.begin(); pos != end; ++pos) { - if (pos->Tag() == tag) - dies.emplace_back(this, &(*pos)); - } - } - - // Return the number of DIEs added to the collection - return dies.size() - old_size; -} - size_t DWARFUnit::GetDebugInfoSize() const { return GetLengthByteSize() + GetLength() - GetHeaderByteSize(); } diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h index 81a7fc4ea5a..d53ed756fe0 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h @@ -95,8 +95,6 @@ public: ScopedExtractDIEs ExtractDIEsScoped(); DWARFDIE LookupAddress(const dw_addr_t address); - size_t AppendDIEsWithTag(const dw_tag_t tag, std::vector &dies, - uint32_t depth = UINT32_MAX) const; bool Verify(lldb_private::Stream *s) const; virtual void Dump(lldb_private::Stream *s) const = 0; /// Get the data that contains the DIE information for this unit. diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index 9021cda4941..96073f31f53 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -844,10 +844,12 @@ size_t SymbolFileDWARF::ParseFunctions(CompileUnit &comp_unit) { return 0; size_t functions_added = 0; - std::vector function_dies; - dwarf_cu->GetNonSkeletonUnit().AppendDIEsWithTag(DW_TAG_subprogram, - function_dies); - for (const DWARFDIE &die : function_dies) { + dwarf_cu = &dwarf_cu->GetNonSkeletonUnit(); + for (DWARFDebugInfoEntry &entry : dwarf_cu->dies()) { + if (entry.Tag() != DW_TAG_subprogram) + continue; + + DWARFDIE die(dwarf_cu, &entry); if (comp_unit.FindFunctionByUID(die.GetID())) continue; if (ParseFunction(comp_unit, die)) -- cgit v1.2.3