[Lldb-commits] [PATCH] D50071: Use rich mangling information in Symtab::InitNameIndexes()
Stefan Gränitz via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri Aug 3 08:33:06 PDT 2018
sgraenitz added inline comments.
================
Comment at: source/Core/RichManglingInfo.cpp:69-80
+const char *RichManglingInfo::GetFunctionBaseName() const {
+ switch (m_provider) {
+ case ItaniumPartialDemangler:
+ if (auto buf = m_IPD->getFunctionBaseName(m_IPD_buf, &m_IPD_size)) {
+ m_IPD_buf = buf;
+ return buf;
+ }
----------------
labath wrote:
> Could these return `StringRef`? Am I correct in assuming that `m_IPD_size` holds the size of the returned string? If thats the case then you could even do this with no performance impact (or a positive one).
While investigating the `StringRef` issue, I realized another problem here. The second param `N` to the IPD queries is used to pass the **buffer size in** and the **string length out**. With the current use of `m_IPD_size` I pass ever smaller buffer sizes in subsequent calls. That causes unnecessary reallocs. I should track the length out param separately.
================
Comment at: source/Symbol/Symtab.cpp:397
+ // The base name will be our entry's name.
+ entry.cstring = ConstString(base_name.data());
+
----------------
labath wrote:
> remove `.data()`
Actually, this is dangerous as `StringRef` doesn't guarantee null termination. Will fix that.
https://reviews.llvm.org/D50071
More information about the lldb-commits
mailing list