[Lldb-commits] [lldb] r338995 - Change ConstString::SetCStringWithMangledCounterpart to use StringRef
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Mon Aug 6 01:28:00 PDT 2018
Author: labath
Date: Mon Aug 6 01:27:59 2018
New Revision: 338995
URL: http://llvm.org/viewvc/llvm-project?rev=338995&view=rev
Log:
Change ConstString::SetCStringWithMangledCounterpart to use StringRef
This should simplify the upcoming demangling patch (D50071). While I was
in there, I also added a quick test for the function.
Modified:
lldb/trunk/include/lldb/Utility/ConstString.h
lldb/trunk/source/Core/Mangled.cpp
lldb/trunk/source/Utility/ConstString.cpp
lldb/trunk/unittests/Utility/ConstStringTest.cpp
Modified: lldb/trunk/include/lldb/Utility/ConstString.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/ConstString.h?rev=338995&r1=338994&r2=338995&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Utility/ConstString.h (original)
+++ lldb/trunk/include/lldb/Utility/ConstString.h Mon Aug 6 01:27:59 2018
@@ -373,15 +373,14 @@ public:
/// them.
///
/// @param[in] demangled
- /// The demangled C string to correlate with the \a mangled
- /// name.
+ /// The demangled string to correlate with the \a mangled name.
///
/// @param[in] mangled
/// The already uniqued mangled ConstString to correlate the
/// soon to be uniqued version of \a demangled.
//------------------------------------------------------------------
- void SetCStringWithMangledCounterpart(const char *demangled,
- const ConstString &mangled);
+ void SetStringWithMangledCounterpart(llvm::StringRef demangled,
+ const ConstString &mangled);
//------------------------------------------------------------------
/// Retrieve the mangled or demangled counterpart for a mangled or demangled
Modified: lldb/trunk/source/Core/Mangled.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Mangled.cpp?rev=338995&r1=338994&r2=338995&view=diff
==============================================================================
--- lldb/trunk/source/Core/Mangled.cpp (original)
+++ lldb/trunk/source/Core/Mangled.cpp Mon Aug 6 01:27:59 2018
@@ -308,7 +308,7 @@ Mangled::GetDemangledName(lldb::Language
break;
}
if (demangled_name) {
- m_demangled.SetCStringWithMangledCounterpart(demangled_name, m_mangled);
+ m_demangled.SetStringWithMangledCounterpart(demangled_name, m_mangled);
free(demangled_name);
}
}
Modified: lldb/trunk/source/Utility/ConstString.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/ConstString.cpp?rev=338995&r1=338994&r2=338995&view=diff
==============================================================================
--- lldb/trunk/source/Utility/ConstString.cpp (original)
+++ lldb/trunk/source/Utility/ConstString.cpp Mon Aug 6 01:27:59 2018
@@ -111,38 +111,34 @@ public:
}
const char *
- GetConstCStringAndSetMangledCounterPart(const char *demangled_cstr,
+ GetConstCStringAndSetMangledCounterPart(llvm::StringRef demangled,
const char *mangled_ccstr) {
- if (demangled_cstr != nullptr) {
- const char *demangled_ccstr = nullptr;
+ const char *demangled_ccstr = nullptr;
- {
- llvm::StringRef string_ref(demangled_cstr);
- const uint8_t h = hash(string_ref);
- llvm::sys::SmartScopedWriter<false> wlock(m_string_pools[h].m_mutex);
-
- // Make string pool entry with the mangled counterpart already set
- StringPoolEntryType &entry =
- *m_string_pools[h]
- .m_string_map.insert(std::make_pair(string_ref, mangled_ccstr))
- .first;
-
- // Extract the const version of the demangled_cstr
- demangled_ccstr = entry.getKeyData();
- }
-
- {
- // Now assign the demangled const string as the counterpart of the
- // mangled const string...
- const uint8_t h = hash(llvm::StringRef(mangled_ccstr));
- llvm::sys::SmartScopedWriter<false> wlock(m_string_pools[h].m_mutex);
- GetStringMapEntryFromKeyData(mangled_ccstr).setValue(demangled_ccstr);
- }
+ {
+ const uint8_t h = hash(demangled);
+ llvm::sys::SmartScopedWriter<false> wlock(m_string_pools[h].m_mutex);
+
+ // Make string pool entry with the mangled counterpart already set
+ StringPoolEntryType &entry =
+ *m_string_pools[h]
+ .m_string_map.insert(std::make_pair(demangled, mangled_ccstr))
+ .first;
- // Return the constant demangled C string
- return demangled_ccstr;
+ // Extract the const version of the demangled_cstr
+ demangled_ccstr = entry.getKeyData();
}
- return nullptr;
+
+ {
+ // Now assign the demangled const string as the counterpart of the
+ // mangled const string...
+ const uint8_t h = hash(llvm::StringRef(mangled_ccstr));
+ llvm::sys::SmartScopedWriter<false> wlock(m_string_pools[h].m_mutex);
+ GetStringMapEntryFromKeyData(mangled_ccstr).setValue(demangled_ccstr);
+ }
+
+ // Return the constant demangled C string
+ return demangled_ccstr;
}
const char *GetConstTrimmedCStringWithLength(const char *cstr,
@@ -306,7 +302,7 @@ void ConstString::SetString(const llvm::
m_string = StringPool().GetConstCStringWithLength(s.data(), s.size());
}
-void ConstString::SetCStringWithMangledCounterpart(const char *demangled,
+void ConstString::SetStringWithMangledCounterpart(llvm::StringRef demangled,
const ConstString &mangled) {
m_string = StringPool().GetConstCStringAndSetMangledCounterPart(
demangled, mangled.m_string);
Modified: lldb/trunk/unittests/Utility/ConstStringTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/ConstStringTest.cpp?rev=338995&r1=338994&r2=338995&view=diff
==============================================================================
--- lldb/trunk/unittests/Utility/ConstStringTest.cpp (original)
+++ lldb/trunk/unittests/Utility/ConstStringTest.cpp Mon Aug 6 01:27:59 2018
@@ -16,3 +16,20 @@ using namespace lldb_private;
TEST(ConstStringTest, format_provider) {
EXPECT_EQ("foo", llvm::formatv("{0}", ConstString("foo")).str());
}
+
+TEST(ConstStringTest, MangledCounterpart) {
+ ConstString foo("foo");
+ ConstString counterpart;
+ EXPECT_FALSE(foo.GetMangledCounterpart(counterpart));
+ EXPECT_EQ("", counterpart.GetStringRef());
+
+ ConstString bar;
+ bar.SetStringWithMangledCounterpart("bar", foo);
+ EXPECT_EQ("bar", bar.GetStringRef());
+
+ EXPECT_TRUE(bar.GetMangledCounterpart(counterpart));
+ EXPECT_EQ("foo", counterpart.GetStringRef());
+
+ EXPECT_TRUE(foo.GetMangledCounterpart(counterpart));
+ EXPECT_EQ("bar", counterpart.GetStringRef());
+}
More information about the lldb-commits
mailing list