Skip to content

Commit 7b5163d

Browse files
authored
[lldb][NFC] use llvm::StringRef in ExtractContextAndIdentifer function (#169506)
this avoids allocation when checking if a method contains a path.
1 parent 6d21ce8 commit 7b5163d

File tree

4 files changed

+8
-8
lines changed

4 files changed

+8
-8
lines changed

lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ CPlusPlusLanguage::GetFunctionNameInfo(ConstString name) const {
8484
if (basename.empty()) {
8585
llvm::StringRef context;
8686
func_name_type |=
87-
(ExtractContextAndIdentifier(name.GetCString(), context, basename)
87+
(ExtractContextAndIdentifier(name.GetStringRef(), context, basename)
8888
? (eFunctionNameTypeMethod | eFunctionNameTypeBase)
8989
: eFunctionNameTypeFull);
9090
} else {
@@ -546,9 +546,8 @@ bool CPlusPlusLanguage::CxxMethodName::ContainsPath(llvm::StringRef path) {
546546

547547
llvm::StringRef identifier;
548548
llvm::StringRef context;
549-
std::string path_str = path.str();
550-
bool success = CPlusPlusLanguage::ExtractContextAndIdentifier(
551-
path_str.c_str(), context, identifier);
549+
const bool success =
550+
CPlusPlusLanguage::ExtractContextAndIdentifier(path, context, identifier);
552551
if (!success)
553552
return m_full.GetStringRef().contains(path);
554553

@@ -592,7 +591,8 @@ bool CPlusPlusLanguage::DemangledNameContainsPath(llvm::StringRef path,
592591
}
593592

594593
bool CPlusPlusLanguage::ExtractContextAndIdentifier(
595-
const char *name, llvm::StringRef &context, llvm::StringRef &identifier) {
594+
llvm::StringRef name, llvm::StringRef &context,
595+
llvm::StringRef &identifier) {
596596
if (MSVCUndecoratedNameParser::IsMSVCUndecoratedName(name))
597597
return MSVCUndecoratedNameParser::ExtractContextAndIdentifier(name, context,
598598
identifier);

lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class CPlusPlusLanguage : public Language {
154154
// C/C++ identifier, then it will return false
155155
// and identifier and context will be unchanged.
156156

157-
static bool ExtractContextAndIdentifier(const char *name,
157+
static bool ExtractContextAndIdentifier(llvm::StringRef name,
158158
llvm::StringRef &context,
159159
llvm::StringRef &identifier);
160160

lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2341,7 +2341,7 @@ void SymbolFileDWARF::FindGlobalVariables(
23412341
bool name_is_mangled = Mangled::GetManglingScheme(name.GetStringRef()) !=
23422342
Mangled::eManglingSchemeNone;
23432343

2344-
if (!CPlusPlusLanguage::ExtractContextAndIdentifier(name.GetCString(),
2344+
if (!CPlusPlusLanguage::ExtractContextAndIdentifier(name.GetStringRef(),
23452345
context, basename))
23462346
basename = name.GetStringRef();
23472347

lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ TEST(CPlusPlusLanguage, ExtractContextAndIdentifier) {
341341
llvm::StringRef context, basename;
342342
for (const auto &test : test_cases) {
343343
EXPECT_TRUE(CPlusPlusLanguage::ExtractContextAndIdentifier(
344-
test.input.c_str(), context, basename));
344+
test.input, context, basename));
345345
EXPECT_EQ(test.context, context.str());
346346
EXPECT_EQ(test.basename, basename.str());
347347
}

0 commit comments

Comments
 (0)