================
@@ -68,6 +68,11 @@ class DWARFDeclContext {
 
   const char *GetQualifiedName() const;
 
+  /// Returns a vector of string, one string per entry in the fully qualified
+  /// name. For example, for the DeclContext `A::B::C`, this methods returns
+  /// `{"C", "B", "A"}`
+  llvm::SmallVector<llvm::StringRef> GetQualifiedNameAsVector() const;
----------------
felipepiovezan wrote:

Out of curiosity, why is a pair of name + tag called a "Compiler Context"?

> We could make a using directive for std::vector<CompilerContext> so we don't 
> have to mention the std::vector all of the time :

A DWARFDeclContext has a couple of functions that are used elsewhere, so we 
can't replace it with a vector 1:1.  We'd probably still need an abstraction or 
a few free functions. 
Also [personal opinion] it is better to have `std::vector` if the abstraction 
_is_ just vector.

> comparing many matching entries becomes a pointer compare for the string 
> instead of actual string comparisons.

This is assuming the thing that is compared against is _also_ a ConstString, 
which is not necessarily the case. 
This is probably a much longer discussion, but every time I've seen the string 
comparison argument in favor of using ConstString, I was never able to prove it 
has any measurable difference. It's obviously hard to prove a negative, but I 
have notes on experiments where I tried to show they make any difference inside 
FileSpecs, and could not prove that to be the case. I even made the 
StringRef::equals function extra slow (no-opt + no length shorcut) and still 
could not see any performance impact.


----

Getting back to the original discussion: if we feel strongly that adding this 
method is akin to more duplication, I don't mind closing this patch until we 
can do something about DWARFDeclContext and possibly remove it. 
In the meantime, the follow up patches to this can instead operate on 
`DWARFDeclContext::operator[]` + `Entry.Name` without too much extra burden

https://github.com/llvm/llvm-project/pull/77349
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to