[Lldb-commits] [lldb] [lldb][NFC] use llvm::StringRef in `ExtractContextAndIdentifer` function (PR #169506)
Ebuka Ezike via lldb-commits
lldb-commits at lists.llvm.org
Tue Nov 25 07:47:13 PST 2025
https://github.com/da-viper created https://github.com/llvm/llvm-project/pull/169506
this avoids allocation when checking if a method contains a path.
>From 2ca650fdc576458b003dedadf4c94ba96f59b592 Mon Sep 17 00:00:00 2001
From: Ebuka Ezike <yerimyah1 at gmail.com>
Date: Tue, 25 Nov 2025 15:45:28 +0000
Subject: [PATCH] [lldb][NFC] use llvm::StringRef in
`ExtractContextAndIdentifer` function
this avoids allocation when checking if a method contains a path.
---
.../Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp | 10 +++++-----
.../Plugins/Language/CPlusPlus/CPlusPlusLanguage.h | 2 +-
.../Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp | 2 +-
.../Language/CPlusPlus/CPlusPlusLanguageTest.cpp | 2 +-
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index 3cbae1e87f3dc..4b66ff814935a 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -84,7 +84,7 @@ CPlusPlusLanguage::GetFunctionNameInfo(ConstString name) const {
if (basename.empty()) {
llvm::StringRef context;
func_name_type |=
- (ExtractContextAndIdentifier(name.GetCString(), context, basename)
+ (ExtractContextAndIdentifier(name.GetStringRef(), context, basename)
? (eFunctionNameTypeMethod | eFunctionNameTypeBase)
: eFunctionNameTypeFull);
} else {
@@ -546,9 +546,8 @@ bool CPlusPlusLanguage::CxxMethodName::ContainsPath(llvm::StringRef path) {
llvm::StringRef identifier;
llvm::StringRef context;
- std::string path_str = path.str();
- bool success = CPlusPlusLanguage::ExtractContextAndIdentifier(
- path_str.c_str(), context, identifier);
+ const bool success =
+ CPlusPlusLanguage::ExtractContextAndIdentifier(path, context, identifier);
if (!success)
return m_full.GetStringRef().contains(path);
@@ -592,7 +591,8 @@ bool CPlusPlusLanguage::DemangledNameContainsPath(llvm::StringRef path,
}
bool CPlusPlusLanguage::ExtractContextAndIdentifier(
- const char *name, llvm::StringRef &context, llvm::StringRef &identifier) {
+ llvm::StringRef name, llvm::StringRef &context,
+ llvm::StringRef &identifier) {
if (MSVCUndecoratedNameParser::IsMSVCUndecoratedName(name))
return MSVCUndecoratedNameParser::ExtractContextAndIdentifier(name, context,
identifier);
diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
index 13d436a68c691..b5472340bd913 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
@@ -154,7 +154,7 @@ class CPlusPlusLanguage : public Language {
// C/C++ identifier, then it will return false
// and identifier and context will be unchanged.
- static bool ExtractContextAndIdentifier(const char *name,
+ static bool ExtractContextAndIdentifier(llvm::StringRef name,
llvm::StringRef &context,
llvm::StringRef &identifier);
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index a8654869d6093..ca8e74337733c 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -2341,7 +2341,7 @@ void SymbolFileDWARF::FindGlobalVariables(
bool name_is_mangled = Mangled::GetManglingScheme(name.GetStringRef()) !=
Mangled::eManglingSchemeNone;
- if (!CPlusPlusLanguage::ExtractContextAndIdentifier(name.GetCString(),
+ if (!CPlusPlusLanguage::ExtractContextAndIdentifier(name.GetStringRef(),
context, basename))
basename = name.GetStringRef();
diff --git a/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp b/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp
index 8c36f540370f3..23f2f4218601a 100644
--- a/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp
+++ b/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp
@@ -341,7 +341,7 @@ TEST(CPlusPlusLanguage, ExtractContextAndIdentifier) {
llvm::StringRef context, basename;
for (const auto &test : test_cases) {
EXPECT_TRUE(CPlusPlusLanguage::ExtractContextAndIdentifier(
- test.input.c_str(), context, basename));
+ test.input, context, basename));
EXPECT_EQ(test.context, context.str());
EXPECT_EQ(test.basename, basename.str());
}
More information about the lldb-commits
mailing list