[Lldb-commits] [lldb] [lldb][NFC] Change type of Breakpoint's name list (PR #205429)
Alex Langford via lldb-commits
lldb-commits at lists.llvm.org
Tue Jun 23 16:03:33 PDT 2026
https://github.com/bulbazord updated https://github.com/llvm/llvm-project/pull/205429
>From 0ce9937c14d12637eb65485a3b2f49e1cc332408 Mon Sep 17 00:00:00 2001
From: Alex Langford <alangford at apple.com>
Date: Tue, 23 Jun 2026 13:51:25 -0700
Subject: [PATCH 1/2] [lldb][NFC] Change type of Breakpoint's name list
This is currently a `std::unordered_set<std::string>`. The downside of
this is that you need to have a `std::string` to perform a lookup of any
kind. This often requires a potential allocation any time we want to
query the name list. Even using `std::string_view` is not sufficient to
perform a lookup.
I propose that this instead be a `llvm::StringSet` which has accepts
StringRefs as its primary currency for insertions, lookups, and more.
---
lldb/include/lldb/Breakpoint/Breakpoint.h | 14 ++++++++------
lldb/source/Breakpoint/Breakpoint.cpp | 6 +++---
2 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/lldb/include/lldb/Breakpoint/Breakpoint.h b/lldb/include/lldb/Breakpoint/Breakpoint.h
index 67a741c6c9251..db04fc9114e56 100644
--- a/lldb/include/lldb/Breakpoint/Breakpoint.h
+++ b/lldb/include/lldb/Breakpoint/Breakpoint.h
@@ -27,6 +27,8 @@
#include "lldb/Utility/StringList.h"
#include "lldb/Utility/StructuredData.h"
+#include "llvm/ADT/StringSet.h"
+
namespace lldb_private {
/// \class Breakpoint Breakpoint.h "lldb/Breakpoint/Breakpoint.h" Class that
@@ -583,8 +585,8 @@ class Breakpoint : public std::enable_shared_from_this<Breakpoint>,
void GetNames(std::vector<std::string> &names) {
names.clear();
- for (auto name : m_name_list) {
- names.push_back(name);
+ for (auto name : m_name_list.keys()) {
+ names.push_back(name.str());
}
}
@@ -687,10 +689,10 @@ class Breakpoint : public std::enable_shared_from_this<Breakpoint>,
bool
m_hardware; // If this breakpoint is required to use a hardware breakpoint
Target &m_target; // The target that holds this breakpoint.
- std::unordered_set<std::string> m_name_list; // If not empty, this is the name
- // of this breakpoint (many
- // breakpoints can share the same
- // name.)
+ llvm::StringSet<> m_name_list; // If not empty, this is the name
+ // of this breakpoint (many
+ // breakpoints can share the same
+ // name.)
lldb::SearchFilterSP
m_filter_sp; // The filter that constrains the breakpoint's domain.
lldb::BreakpointResolverSP
diff --git a/lldb/source/Breakpoint/Breakpoint.cpp b/lldb/source/Breakpoint/Breakpoint.cpp
index 07412cd092f0d..9bc014b86e2d6 100644
--- a/lldb/source/Breakpoint/Breakpoint.cpp
+++ b/lldb/source/Breakpoint/Breakpoint.cpp
@@ -88,7 +88,7 @@ StructuredData::ObjectSP Breakpoint::SerializeToStructuredData() {
if (!m_name_list.empty()) {
StructuredData::ArraySP names_array_sp(new StructuredData::Array());
- for (auto name : m_name_list) {
+ for (auto name : m_name_list.keys()) {
names_array_sp->AddItem(std::make_shared<StructuredData::String>(name));
}
breakpoint_contents_sp->AddItem(Breakpoint::GetKey(OptionNames::Names),
@@ -1003,9 +1003,9 @@ void Breakpoint::GetDescriptionForType(Stream *s, lldb::DescriptionLevel level,
s->Printf("Names:");
s->EOL();
s->IndentMore();
- for (const std::string &name : m_name_list) {
+ for (llvm::StringRef name : m_name_list.keys()) {
s->Indent();
- s->Printf("%s\n", name.c_str());
+ s->Format("{0}\n", name);
}
s->IndentLess();
}
>From e72b42d3dd29f853bbc379e03fc569b010352e31 Mon Sep 17 00:00:00 2001
From: Alex Langford <nirvashtzero at gmail.com>
Date: Tue, 23 Jun 2026 16:03:24 -0700
Subject: [PATCH 2/2] Update lldb/include/lldb/Breakpoint/Breakpoint.h
Co-authored-by: Jonas Devlieghere <jonas at devlieghere.com>
---
lldb/include/lldb/Breakpoint/Breakpoint.h | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/lldb/include/lldb/Breakpoint/Breakpoint.h b/lldb/include/lldb/Breakpoint/Breakpoint.h
index db04fc9114e56..c6bbc83501832 100644
--- a/lldb/include/lldb/Breakpoint/Breakpoint.h
+++ b/lldb/include/lldb/Breakpoint/Breakpoint.h
@@ -689,10 +689,9 @@ class Breakpoint : public std::enable_shared_from_this<Breakpoint>,
bool
m_hardware; // If this breakpoint is required to use a hardware breakpoint
Target &m_target; // The target that holds this breakpoint.
- llvm::StringSet<> m_name_list; // If not empty, this is the name
- // of this breakpoint (many
- // breakpoints can share the same
- // name.)
+ /// If not empty, this is the name of this breakpoint (many breakpoints can
+ /// share the same name.)
+ llvm::StringSet<> m_name_list;
lldb::SearchFilterSP
m_filter_sp; // The filter that constrains the breakpoint's domain.
lldb::BreakpointResolverSP
More information about the lldb-commits
mailing list