Skip to content

Commit 03a92f0

Browse files
authored
[lldb] BreakpointResolver{*}::CreateFromStructuredData should return shared pointers (#71477)
BreakpointResolver::CreateFromStructuredData returns a BreakpointResolverSP, but all of the subclasses return raw pointers. Instead of creating a raw pointer and shoving it into a shared pointer, it seems reasonable to just create the shared pointer directly.
1 parent 009ba77 commit 03a92f0

11 files changed

+38
-38
lines changed

lldb/include/lldb/Breakpoint/BreakpointResolverAddress.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class BreakpointResolverAddress : public BreakpointResolver {
3030

3131
~BreakpointResolverAddress() override = default;
3232

33-
static BreakpointResolver *
33+
static lldb::BreakpointResolverSP
3434
CreateFromStructuredData(const lldb::BreakpointSP &bkpt,
3535
const StructuredData::Dictionary &options_dict,
3636
Status &error);

lldb/include/lldb/Breakpoint/BreakpointResolverFileLine.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class BreakpointResolverFileLine : public BreakpointResolver {
2727
const SourceLocationSpec &location_spec,
2828
std::optional<llvm::StringRef> removed_prefix_opt = std::nullopt);
2929

30-
static BreakpointResolver *
30+
static lldb::BreakpointResolverSP
3131
CreateFromStructuredData(const lldb::BreakpointSP &bkpt,
3232
const StructuredData::Dictionary &data_dict,
3333
Status &error);

lldb/include/lldb/Breakpoint/BreakpointResolverFileRegex.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class BreakpointResolverFileRegex : public BreakpointResolver {
2727
const lldb::BreakpointSP &bkpt, RegularExpression regex,
2828
const std::unordered_set<std::string> &func_name_set, bool exact_match);
2929

30-
static BreakpointResolver *
30+
static lldb::BreakpointResolverSP
3131
CreateFromStructuredData(const lldb::BreakpointSP &bkpt,
3232
const StructuredData::Dictionary &options_dict,
3333
Status &error);

lldb/include/lldb/Breakpoint/BreakpointResolverName.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class BreakpointResolverName : public BreakpointResolver {
5050
lldb::LanguageType language, lldb::addr_t offset,
5151
bool skip_prologue);
5252

53-
static BreakpointResolver *
53+
static lldb::BreakpointResolverSP
5454
CreateFromStructuredData(const lldb::BreakpointSP &bkpt,
5555
const StructuredData::Dictionary &data_dict,
5656
Status &error);

lldb/include/lldb/Breakpoint/BreakpointResolverScripted.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class BreakpointResolverScripted : public BreakpointResolver {
3030

3131
~BreakpointResolverScripted() override = default;
3232

33-
static BreakpointResolver *
33+
static lldb::BreakpointResolverSP
3434
CreateFromStructuredData(const lldb::BreakpointSP &bkpt,
3535
const StructuredData::Dictionary &options_dict,
3636
Status &error);

lldb/source/Breakpoint/BreakpointResolver.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,26 +110,25 @@ BreakpointResolverSP BreakpointResolver::CreateFromStructuredData(
110110
return result_sp;
111111
}
112112

113-
BreakpointResolver *resolver = nullptr;
114113
switch (resolver_type) {
115114
case FileLineResolver:
116-
resolver = BreakpointResolverFileLine::CreateFromStructuredData(
115+
result_sp = BreakpointResolverFileLine::CreateFromStructuredData(
117116
nullptr, *subclass_options, error);
118117
break;
119118
case AddressResolver:
120-
resolver = BreakpointResolverAddress::CreateFromStructuredData(
119+
result_sp = BreakpointResolverAddress::CreateFromStructuredData(
121120
nullptr, *subclass_options, error);
122121
break;
123122
case NameResolver:
124-
resolver = BreakpointResolverName::CreateFromStructuredData(
123+
result_sp = BreakpointResolverName::CreateFromStructuredData(
125124
nullptr, *subclass_options, error);
126125
break;
127126
case FileRegexResolver:
128-
resolver = BreakpointResolverFileRegex::CreateFromStructuredData(
127+
result_sp = BreakpointResolverFileRegex::CreateFromStructuredData(
129128
nullptr, *subclass_options, error);
130129
break;
131130
case PythonResolver:
132-
resolver = BreakpointResolverScripted::CreateFromStructuredData(
131+
result_sp = BreakpointResolverScripted::CreateFromStructuredData(
133132
nullptr, *subclass_options, error);
134133
break;
135134
case ExceptionResolver:
@@ -139,12 +138,12 @@ BreakpointResolverSP BreakpointResolver::CreateFromStructuredData(
139138
llvm_unreachable("Should never get an unresolvable resolver type.");
140139
}
141140

142-
if (!resolver || error.Fail())
143-
return result_sp;
141+
if (error.Fail() || !result_sp)
142+
return {};
144143

145144
// Add on the global offset option:
146-
resolver->SetOffset(offset);
147-
return BreakpointResolverSP(resolver);
145+
result_sp->SetOffset(offset);
146+
return result_sp;
148147
}
149148

150149
StructuredData::DictionarySP BreakpointResolver::WrapOptionsDict(

lldb/source/Breakpoint/BreakpointResolverAddress.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ BreakpointResolverAddress::BreakpointResolverAddress(const BreakpointSP &bkpt,
3030
: BreakpointResolver(bkpt, BreakpointResolver::AddressResolver),
3131
m_addr(addr), m_resolved_addr(LLDB_INVALID_ADDRESS) {}
3232

33-
BreakpointResolver *BreakpointResolverAddress::CreateFromStructuredData(
33+
BreakpointResolverSP BreakpointResolverAddress::CreateFromStructuredData(
3434
const BreakpointSP &bkpt, const StructuredData::Dictionary &options_dict,
3535
Status &error) {
3636
llvm::StringRef module_name;
@@ -56,7 +56,8 @@ BreakpointResolver *BreakpointResolverAddress::CreateFromStructuredData(
5656
}
5757
module_filespec.SetFile(module_name, FileSpec::Style::native);
5858
}
59-
return new BreakpointResolverAddress(bkpt, address, module_filespec);
59+
return std::make_shared<BreakpointResolverAddress>(bkpt, address,
60+
module_filespec);
6061
}
6162

6263
StructuredData::ObjectSP

lldb/source/Breakpoint/BreakpointResolverFileLine.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ BreakpointResolverFileLine::BreakpointResolverFileLine(
3030
m_location_spec(location_spec), m_skip_prologue(skip_prologue),
3131
m_removed_prefix_opt(removed_prefix_opt) {}
3232

33-
BreakpointResolver *BreakpointResolverFileLine::CreateFromStructuredData(
33+
BreakpointResolverSP BreakpointResolverFileLine::CreateFromStructuredData(
3434
const BreakpointSP &bkpt, const StructuredData::Dictionary &options_dict,
3535
Status &error) {
3636
llvm::StringRef filename;
@@ -90,8 +90,8 @@ BreakpointResolver *BreakpointResolverFileLine::CreateFromStructuredData(
9090
if (!location_spec)
9191
return nullptr;
9292

93-
return new BreakpointResolverFileLine(bkpt, offset, skip_prologue,
94-
location_spec);
93+
return std::make_shared<BreakpointResolverFileLine>(
94+
bkpt, offset, skip_prologue, location_spec);
9595
}
9696

9797
StructuredData::ObjectSP

lldb/source/Breakpoint/BreakpointResolverFileRegex.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ BreakpointResolverFileRegex::BreakpointResolverFileRegex(
2626
m_regex(std::move(regex)), m_exact_match(exact_match),
2727
m_function_names(func_names) {}
2828

29-
BreakpointResolver *BreakpointResolverFileRegex::CreateFromStructuredData(
30-
const lldb::BreakpointSP &bkpt, const StructuredData::Dictionary &options_dict,
31-
Status &error) {
29+
BreakpointResolverSP BreakpointResolverFileRegex::CreateFromStructuredData(
30+
const lldb::BreakpointSP &bkpt,
31+
const StructuredData::Dictionary &options_dict, Status &error) {
3232
bool success;
3333

3434
llvm::StringRef regex_string;
@@ -67,8 +67,8 @@ BreakpointResolver *BreakpointResolverFileRegex::CreateFromStructuredData(
6767
}
6868
}
6969

70-
return new BreakpointResolverFileRegex(bkpt, std::move(regex), names_set,
71-
exact_match);
70+
return std::make_shared<BreakpointResolverFileRegex>(bkpt, std::move(regex),
71+
names_set, exact_match);
7272
}
7373

7474
StructuredData::ObjectSP

lldb/source/Breakpoint/BreakpointResolverName.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ BreakpointResolverName::BreakpointResolverName(
8686
m_regex(rhs.m_regex), m_match_type(rhs.m_match_type),
8787
m_language(rhs.m_language), m_skip_prologue(rhs.m_skip_prologue) {}
8888

89-
BreakpointResolver *BreakpointResolverName::CreateFromStructuredData(
89+
BreakpointResolverSP BreakpointResolverName::CreateFromStructuredData(
9090
const BreakpointSP &bkpt, const StructuredData::Dictionary &options_dict,
9191
Status &error) {
9292
LanguageType language = eLanguageTypeUnknown;
@@ -122,8 +122,8 @@ BreakpointResolver *BreakpointResolverName::CreateFromStructuredData(
122122
success = options_dict.GetValueForKeyAsString(
123123
GetKey(OptionNames::RegexString), regex_text);
124124
if (success) {
125-
return new BreakpointResolverName(bkpt, RegularExpression(regex_text),
126-
language, offset, skip_prologue);
125+
return std::make_shared<BreakpointResolverName>(
126+
bkpt, RegularExpression(regex_text), language, offset, skip_prologue);
127127
} else {
128128
StructuredData::Array *names_array;
129129
success = options_dict.GetValueForKeyAsArray(
@@ -172,13 +172,14 @@ BreakpointResolver *BreakpointResolverName::CreateFromStructuredData(
172172
name_masks.push_back(static_cast<FunctionNameType>(fnt));
173173
}
174174

175-
BreakpointResolverName *resolver = new BreakpointResolverName(
176-
bkpt, names[0].c_str(), name_masks[0], language,
177-
Breakpoint::MatchType::Exact, offset, skip_prologue);
175+
std::shared_ptr<BreakpointResolverName> resolver_sp =
176+
std::make_shared<BreakpointResolverName>(
177+
bkpt, names[0].c_str(), name_masks[0], language,
178+
Breakpoint::MatchType::Exact, offset, skip_prologue);
178179
for (size_t i = 1; i < num_elem; i++) {
179-
resolver->AddNameLookup(ConstString(names[i]), name_masks[i]);
180+
resolver_sp->AddNameLookup(ConstString(names[i]), name_masks[i]);
180181
}
181-
return resolver;
182+
return resolver_sp;
182183
}
183184
}
184185

lldb/source/Breakpoint/BreakpointResolverScripted.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,12 @@ void BreakpointResolverScripted::NotifyBreakpointSet() {
5858
CreateImplementationIfNeeded(GetBreakpoint());
5959
}
6060

61-
BreakpointResolver *
62-
BreakpointResolverScripted::CreateFromStructuredData(
61+
BreakpointResolverSP BreakpointResolverScripted::CreateFromStructuredData(
6362
const BreakpointSP &bkpt, const StructuredData::Dictionary &options_dict,
6463
Status &error) {
6564
llvm::StringRef class_name;
6665
bool success;
67-
66+
6867
success = options_dict.GetValueForKeyAsString(
6968
GetKey(OptionNames::PythonClassName), class_name);
7069
if (!success) {
@@ -80,8 +79,8 @@ BreakpointResolverScripted::CreateFromStructuredData(
8079
if (options_dict.GetValueForKeyAsDictionary(GetKey(OptionNames::ScriptArgs),
8180
args_dict))
8281
args_data_impl.SetObjectSP(args_dict->shared_from_this());
83-
return new BreakpointResolverScripted(bkpt, class_name, depth,
84-
args_data_impl);
82+
return std::make_shared<BreakpointResolverScripted>(bkpt, class_name, depth,
83+
args_data_impl);
8584
}
8685

8786
StructuredData::ObjectSP

0 commit comments

Comments
 (0)