[Lldb-commits] [lldb] 16b8a0d - [lldb] Change interface of StructuredData::Array::GetItemAtIndexAsInteger (#71993)
via lldb-commits
lldb-commits at lists.llvm.org
Mon Jan 8 13:31:07 PST 2024
Author: Alex Langford
Date: 2024-01-08T13:31:03-08:00
New Revision: 16b8a0dc6885dea0882887a6e642a504fd1e193c
URL: https://github.com/llvm/llvm-project/commit/16b8a0dc6885dea0882887a6e642a504fd1e193c
DIFF: https://github.com/llvm/llvm-project/commit/16b8a0dc6885dea0882887a6e642a504fd1e193c.diff
LOG: [lldb] Change interface of StructuredData::Array::GetItemAtIndexAsInteger (#71993)
This is a follow-up to (#71613) and (#71961).
Added:
Modified:
lldb/include/lldb/Utility/StructuredData.h
lldb/source/Breakpoint/BreakpointResolverName.cpp
lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp
lldb/source/Target/DynamicRegisterInfo.cpp
Removed:
################################################################################
diff --git a/lldb/include/lldb/Utility/StructuredData.h b/lldb/include/lldb/Utility/StructuredData.h
index e7ee12868512f4..5e63ef92fac3ec 100644
--- a/lldb/include/lldb/Utility/StructuredData.h
+++ b/lldb/include/lldb/Utility/StructuredData.h
@@ -221,31 +221,17 @@ class StructuredData {
}
template <class IntType>
- bool GetItemAtIndexAsInteger(size_t idx, IntType &result) const {
- ObjectSP value_sp = GetItemAtIndex(idx);
- if (value_sp.get()) {
+ std::optional<IntType> GetItemAtIndexAsInteger(size_t idx) const {
+ if (auto item_sp = GetItemAtIndex(idx)) {
if constexpr (std::numeric_limits<IntType>::is_signed) {
- if (auto signed_value = value_sp->GetAsSignedInteger()) {
- result = static_cast<IntType>(signed_value->GetValue());
- return true;
- }
+ if (auto *signed_value = item_sp->GetAsSignedInteger())
+ return static_cast<IntType>(signed_value->GetValue());
} else {
- if (auto unsigned_value = value_sp->GetAsUnsignedInteger()) {
- result = static_cast<IntType>(unsigned_value->GetValue());
- return true;
- }
+ if (auto *unsigned_value = item_sp->GetAsUnsignedInteger())
+ return static_cast<IntType>(unsigned_value->GetValue());
}
}
- return false;
- }
-
- template <class IntType>
- bool GetItemAtIndexAsInteger(size_t idx, IntType &result,
- IntType default_val) const {
- bool success = GetItemAtIndexAsInteger(idx, result);
- if (!success)
- result = default_val;
- return success;
+ return {};
}
std::optional<llvm::StringRef> GetItemAtIndexAsString(size_t idx) const {
diff --git a/lldb/source/Breakpoint/BreakpointResolverName.cpp b/lldb/source/Breakpoint/BreakpointResolverName.cpp
index 82eef43ad6cfd2..aa86d2a26d1100 100644
--- a/lldb/source/Breakpoint/BreakpointResolverName.cpp
+++ b/lldb/source/Breakpoint/BreakpointResolverName.cpp
@@ -161,14 +161,14 @@ BreakpointResolverSP BreakpointResolverName::CreateFromStructuredData(
error.SetErrorString("BRN::CFSD: name entry is not a string.");
return nullptr;
}
- std::underlying_type<FunctionNameType>::type fnt;
- success = names_mask_array->GetItemAtIndexAsInteger(i, fnt);
- if (!success) {
+ auto maybe_fnt = names_mask_array->GetItemAtIndexAsInteger<
+ std::underlying_type<FunctionNameType>::type>(i);
+ if (!maybe_fnt) {
error.SetErrorString("BRN::CFSD: name mask entry is not an integer.");
return nullptr;
}
names.push_back(std::string(*maybe_name));
- name_masks.push_back(static_cast<FunctionNameType>(fnt));
+ name_masks.push_back(static_cast<FunctionNameType>(*maybe_fnt));
}
std::shared_ptr<BreakpointResolverName> resolver_sp =
diff --git a/lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp b/lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp
index 2a35256a6fb0bf..72293c5331f40d 100644
--- a/lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp
+++ b/lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp
@@ -592,9 +592,10 @@ addr_t InstrumentationRuntimeTSan::GetFirstNonInternalFramePc(
if (skip_one_frame && i == 0)
continue;
- addr_t addr;
- if (!trace_array->GetItemAtIndexAsInteger(i, addr))
+ auto maybe_addr = trace_array->GetItemAtIndexAsInteger<addr_t>(i);
+ if (!maybe_addr)
continue;
+ addr_t addr = *maybe_addr;
lldb_private::Address so_addr;
if (!process_sp->GetTarget().GetSectionLoadList().ResolveLoadAddress(
diff --git a/lldb/source/Target/DynamicRegisterInfo.cpp b/lldb/source/Target/DynamicRegisterInfo.cpp
index 7469c1d4259afc..1a817449fa9589 100644
--- a/lldb/source/Target/DynamicRegisterInfo.cpp
+++ b/lldb/source/Target/DynamicRegisterInfo.cpp
@@ -349,10 +349,8 @@ DynamicRegisterInfo::SetRegisterInfo(const StructuredData::Dictionary &dict,
const size_t num_regs = invalidate_reg_list->GetSize();
if (num_regs > 0) {
for (uint32_t idx = 0; idx < num_regs; ++idx) {
- uint64_t invalidate_reg_num;
- std::optional<llvm::StringRef> maybe_invalidate_reg_name =
- invalidate_reg_list->GetItemAtIndexAsString(idx);
- if (maybe_invalidate_reg_name) {
+ if (auto maybe_invalidate_reg_name =
+ invalidate_reg_list->GetItemAtIndexAsString(idx)) {
const RegisterInfo *invalidate_reg_info =
GetRegisterInfo(*maybe_invalidate_reg_name);
if (invalidate_reg_info) {
@@ -365,10 +363,11 @@ DynamicRegisterInfo::SetRegisterInfo(const StructuredData::Dictionary &dict,
"\"%s\" while parsing register \"%s\"\n",
maybe_invalidate_reg_name->str().c_str(), reg_info.name);
}
- } else if (invalidate_reg_list->GetItemAtIndexAsInteger(
- idx, invalidate_reg_num)) {
- if (invalidate_reg_num != UINT64_MAX)
- m_invalidate_regs_map[i].push_back(invalidate_reg_num);
+ } else if (auto maybe_invalidate_reg_num =
+ invalidate_reg_list->GetItemAtIndexAsInteger<uint64_t>(
+ idx)) {
+ if (*maybe_invalidate_reg_num != UINT64_MAX)
+ m_invalidate_regs_map[i].push_back(*maybe_invalidate_reg_num);
else
printf("error: 'invalidate-regs' list value wasn't a valid "
"integer\n");
More information about the lldb-commits
mailing list