[Lldb-commits] [lldb] [lldb] Avoid unnecessary strlen of mangled names in ConstString (NFC) (PR #197995)
via lldb-commits
lldb-commits at lists.llvm.org
Fri May 15 11:55:09 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Dave Lee (kastiglione)
<details>
<summary>Changes</summary>
C++ mangled names are known to be quite long at times. This change constructs
StringRefs using available length data.
---
Full diff: https://github.com/llvm/llvm-project/pull/197995.diff
1 Files Affected:
- (modified) lldb/source/Utility/ConstString.cpp (+11-9)
``````````diff
diff --git a/lldb/source/Utility/ConstString.cpp b/lldb/source/Utility/ConstString.cpp
index 0ee081427a0b7..9d17de7177f88 100644
--- a/lldb/source/Utility/ConstString.cpp
+++ b/lldb/source/Utility/ConstString.cpp
@@ -98,16 +98,17 @@ class Pool {
// Since the entry is read only, and we derive the entry entirely from
// the pointer, we don't need the lock.
const StringPoolEntryType &entry = GetStringMapEntryFromKeyData(ccstr);
- return entry.getKey().size();
+ return entry.getKeyLength();
}
return 0;
}
StringPoolValueType GetMangledCounterpart(const char *ccstr) {
if (ccstr != nullptr) {
- const PoolEntry &pool = selectPool(llvm::StringRef(ccstr));
+ const StringPoolEntryType &entry = GetStringMapEntryFromKeyData(ccstr);
+ const PoolEntry &pool = selectPool(entry.getKey());
std::shared_lock<PoolMutex> lock(pool.m_mutex);
- return GetStringMapEntryFromKeyData(ccstr).getValue();
+ return entry.getValue();
}
return nullptr;
}
@@ -146,10 +147,10 @@ class Pool {
return nullptr;
}
- const char *
- GetConstCStringAndSetMangledCounterPart(llvm::StringRef demangled,
- const char *mangled_ccstr) {
+ const char *GetConstCStringAndSetMangledCounterPart(llvm::StringRef demangled,
+ llvm::StringRef mangled) {
const char *demangled_ccstr = nullptr;
+ const char *const mangled_ccstr = mangled.data();
{
const uint32_t demangled_hash = StringPool::hash(demangled);
@@ -170,9 +171,10 @@ class Pool {
{
// Now assign the demangled const string as the counterpart of the
// mangled const string...
- PoolEntry &pool = selectPool(llvm::StringRef(mangled_ccstr));
+ StringPoolEntryType &entry = GetStringMapEntryFromKeyData(mangled_ccstr);
+ PoolEntry &pool = selectPool(mangled);
std::lock_guard<PoolMutex> lock(pool.m_mutex);
- GetStringMapEntryFromKeyData(mangled_ccstr).setValue(demangled_ccstr);
+ entry.setValue(demangled_ccstr);
}
// Return the constant demangled C string
@@ -341,7 +343,7 @@ void ConstString::SetString(llvm::StringRef s) {
void ConstString::SetStringWithMangledCounterpart(llvm::StringRef demangled,
ConstString mangled) {
m_string = StringPool().GetConstCStringAndSetMangledCounterPart(
- demangled, mangled.m_string);
+ demangled, mangled.GetStringRef());
}
bool ConstString::GetMangledCounterpart(ConstString &counterpart) const {
``````````
</details>
https://github.com/llvm/llvm-project/pull/197995
More information about the lldb-commits
mailing list