kastiglione created this revision. kastiglione added reviewers: aprantl, augusto2112, JDevlieghere. kastiglione added projects: All, LLDB. kastiglione requested review of this revision.
When debugging via debug map, `Module::FindTypes` is called for very frequently due to lookups happening over the possibly large set of object files. Where a scoped timer is useful, it can placed in `SymbolFile` subclasses. This change adds a scoped timer to `SymbolFileDWARFDebugMap::FindTypes`. Also, deletes some nearby long commented out code. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D121480 Files: lldb/source/Core/Module.cpp lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp @@ -1167,25 +1167,13 @@ llvm::ArrayRef<CompilerContext> context, LanguageSet languages, llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files, TypeMap &types) { + LLDB_SCOPED_TIMER(); ForEachSymbolFile([&](SymbolFileDWARF *oso_dwarf) -> bool { oso_dwarf->FindTypes(context, languages, searched_symbol_files, types); return false; }); } -// -// uint32_t -// SymbolFileDWARFDebugMap::FindTypes (const SymbolContext& sc, const -// RegularExpression& regex, bool append, uint32_t max_matches, Type::Encoding -// encoding, lldb::user_id_t udt_uid, TypeList& types) -//{ -// SymbolFileDWARF *oso_dwarf = GetSymbolFile (sc); -// if (oso_dwarf) -// return oso_dwarf->FindTypes (sc, regex, append, max_matches, encoding, -// udt_uid, types); -// return 0; -//} - CompilerDeclContext SymbolFileDWARFDebugMap::FindNamespace( lldb_private::ConstString name, const CompilerDeclContext &parent_decl_ctx) { Index: lldb/source/Core/Module.cpp =================================================================== --- lldb/source/Core/Module.cpp +++ lldb/source/Core/Module.cpp @@ -1025,7 +1025,9 @@ llvm::ArrayRef<CompilerContext> pattern, LanguageSet languages, llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files, TypeMap &types) { - LLDB_SCOPED_TIMER(); + // If a scoped timer is needed, place it in a SymbolFile::FindTypes override. + // A timer here is too high volume for some cases, for example when calling + // FindTypes on each object file. if (SymbolFile *symbols = GetSymbolFile()) symbols->FindTypes(pattern, languages, searched_symbol_files, types); }
Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp @@ -1167,25 +1167,13 @@ llvm::ArrayRef<CompilerContext> context, LanguageSet languages, llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files, TypeMap &types) { + LLDB_SCOPED_TIMER(); ForEachSymbolFile([&](SymbolFileDWARF *oso_dwarf) -> bool { oso_dwarf->FindTypes(context, languages, searched_symbol_files, types); return false; }); } -// -// uint32_t -// SymbolFileDWARFDebugMap::FindTypes (const SymbolContext& sc, const -// RegularExpression& regex, bool append, uint32_t max_matches, Type::Encoding -// encoding, lldb::user_id_t udt_uid, TypeList& types) -//{ -// SymbolFileDWARF *oso_dwarf = GetSymbolFile (sc); -// if (oso_dwarf) -// return oso_dwarf->FindTypes (sc, regex, append, max_matches, encoding, -// udt_uid, types); -// return 0; -//} - CompilerDeclContext SymbolFileDWARFDebugMap::FindNamespace( lldb_private::ConstString name, const CompilerDeclContext &parent_decl_ctx) { Index: lldb/source/Core/Module.cpp =================================================================== --- lldb/source/Core/Module.cpp +++ lldb/source/Core/Module.cpp @@ -1025,7 +1025,9 @@ llvm::ArrayRef<CompilerContext> pattern, LanguageSet languages, llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files, TypeMap &types) { - LLDB_SCOPED_TIMER(); + // If a scoped timer is needed, place it in a SymbolFile::FindTypes override. + // A timer here is too high volume for some cases, for example when calling + // FindTypes on each object file. if (SymbolFile *symbols = GetSymbolFile()) symbols->FindTypes(pattern, languages, searched_symbol_files, types); }
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits