-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[lldb][DataFormatter][NFC] Use GetFirstValueOfLibCXXCompressedPair throughout formatters #80133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[lldb][DataFormatter][NFC] Use GetFirstValueOfLibCXXCompressedPair throughout formatters #80133
Conversation
@llvm/pr-subscribers-lldb Author: Michael Buch (Michael137) ChangesThis avoids duplicating the logic to get the first element of a libc++ Drive-by changes:
Full diff: https://github.com/llvm/llvm-project/pull/80133.diff 1 Files Affected:
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
index 092a4120376b7..d3ee63a35e107 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
@@ -213,30 +213,20 @@ size_t lldb_private::formatters::LibcxxStdMapSyntheticFrontEnd::
CalculateNumChildren() {
if (m_count != UINT32_MAX)
return m_count;
+
if (m_tree == nullptr)
return 0;
- ValueObjectSP m_item(m_tree->GetChildMemberWithName("__pair3_"));
- if (!m_item)
+
+ ValueObjectSP size_node(m_tree->GetChildMemberWithName("__pair3_"));
+ if (!size_node)
return 0;
- switch (m_item->GetCompilerType().GetNumDirectBaseClasses()) {
- case 1:
- // Assume a pre llvm r300140 __compressed_pair implementation:
- m_item = m_item->GetChildMemberWithName("__first_");
- break;
- case 2: {
- // Assume a post llvm r300140 __compressed_pair implementation:
- ValueObjectSP first_elem_parent = m_item->GetChildAtIndex(0);
- m_item = first_elem_parent->GetChildMemberWithName("__value_");
- break;
- }
- default:
- return false;
- }
+ size_node = GetFirstValueOfLibCXXCompressedPair(*size_node);
- if (!m_item)
+ if (!size_node)
return 0;
- m_count = m_item->GetValueAsUnsigned(0);
+
+ m_count = size_node->GetValueAsUnsigned(0);
return m_count;
}
|
…roughout formatters This avoids duplicating the logic to get the first element of a libc++ `__compressed_pair`. This will be useful in supporting upcoming changes to the layout of `__compressed_pair`. Drive-by changes: * Renamed `m_item` to `size_node` for readability; `m_item` suggests it's a member variable, which it is not.
4380ded
to
da7c51b
Compare
✅ With the latest revision this PR passed the C/C++ code formatter. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice removal of duplicated code!
…roughout formatters (llvm#80133) This avoids duplicating the logic to get the first element of a libc++ `__compressed_pair`. This will be useful in supporting upcoming changes to the layout of `__compressed_pair`. Drive-by changes: * Renamed `m_item` to `size_node` for readability; `m_item` suggests it's a member variable, which it is not. (cherry picked from commit 08c0eb1)
…roughout formatters (llvm#80133) This avoids duplicating the logic to get the first element of a libc++ `__compressed_pair`. This will be useful in supporting upcoming changes to the layout of `__compressed_pair`. Drive-by changes: * Renamed `m_item` to `size_node` for readability; `m_item` suggests it's a member variable, which it is not. (cherry picked from commit 08c0eb1)
This avoids duplicating the logic to get the first
element of a libc++
__compressed_pair
. This willbe useful in supporting upcoming changes to the layout
of
__compressed_pair
.Drive-by changes:
m_item
tosize_node
for readability;m_item
suggests it's a member variable, which itis not.