Author: Pavel Labath Date: 2019-12-23T15:50:30+01:00 New Revision: e40ac74dacda99ff6330945f0f105252b7c28c9c
URL: https://github.com/llvm/llvm-project/commit/e40ac74dacda99ff6330945f0f105252b7c28c9c DIFF: https://github.com/llvm/llvm-project/commit/e40ac74dacda99ff6330945f0f105252b7c28c9c.diff LOG: [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. Added: Modified: lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Removed: ################################################################################ diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp index 3ced8d7f89b7..b71595b1448d 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<DWARFDIE> &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 81a7fc4ea5a3..d53ed756fe05 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h @@ -95,8 +95,6 @@ class DWARFUnit : public lldb_private::UserID { ScopedExtractDIEs ExtractDIEsScoped(); DWARFDIE LookupAddress(const dw_addr_t address); - size_t AppendDIEsWithTag(const dw_tag_t tag, std::vector<DWARFDIE> &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 9021cda49419..96073f31f538 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<DWARFDIE> 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)) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits