aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
diff options
context:
space:
mode:
authorMichael Buch <michaelbuch12@gmail.com>2024-01-31 17:18:13 +0000
committerGitHub <noreply@github.com>2024-01-31 17:18:13 +0000
commit08c0eb183a9ca2983d20f5a5f366df44f199d287 (patch)
tree4b2bce041b0632d81175cf60c47e1d4e072a2e82 /lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
parent8241106bf30fa74f27e324ba23c42a3503ab5707 (diff)
downloadllvm-08c0eb183a9ca2983d20f5a5f366df44f199d287.zip
llvm-08c0eb183a9ca2983d20f5a5f366df44f199d287.tar.gz
llvm-08c0eb183a9ca2983d20f5a5f366df44f199d287.tar.bz2
[lldb][DataFormatter][NFC] Use GetFirstValueOfLibCXXCompressedPair throughout formatters (#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.
Diffstat (limited to 'lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp')
-rw-r--r--lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp26
1 files changed, 8 insertions, 18 deletions
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
index 092a412..d3ee63a 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;
}