[Lldb-commits] [lldb] Improve type and namespace lookup using parent chain (PR #108907)
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Mon Sep 23 02:39:45 PDT 2024
================
@@ -374,25 +377,40 @@ void DebugNamesDWARFIndex::GetFullyQualifiedType(
m_fallback.GetFullyQualifiedType(context, callback);
}
+bool DebugNamesDWARFIndex::SameAsEntryATName(
+ llvm::StringRef query_name, const DebugNames::Entry &entry) const {
+ auto maybe_dieoffset = entry.getDIEUnitOffset();
+ if (!maybe_dieoffset)
+ return false;
+
+ // [Optimization] instead of parsing the entry from dwo file, we simply
+ // check if the query_name can point to an entry of the same DIE offset.
+ // This greatly reduced number of dwo file parsed and thus improved the
+ // performance.
+ for (const DebugNames::Entry &query_entry :
+ entry.getNameIndex()->equal_range(query_name)) {
+ auto query_dieoffset = query_entry.getDIEUnitOffset();
+ if (!query_dieoffset)
+ continue;
+
+ if (*query_dieoffset == *maybe_dieoffset) {
+ return true;
+ } else if (*query_dieoffset > *maybe_dieoffset) {
+ // The pool entries of the same name are sequentially cluttered together
+ // so if the query name from `query_name` is after the target entry, this
+ // is definitely not the correct one, we can stop searching.
----------------
labath wrote:
Okay, that explains a few things, but then I'm not sure what you want to achieve with this check. It sounds to me like this consecutiveness is already guaranteed by the parser (it keeps parsing until it reaches the end-of-list entry). Maybe you could provide an example of the kind of situation that you want to detect/rule out?
https://github.com/llvm/llvm-project/pull/108907
More information about the lldb-commits
mailing list