https://github.com/Michael137 created https://github.com/llvm/llvm-project/pull/80133
This avoids duplicating the logic to get the first element of a libc++ `__compressed_pair`. This will be useful in upcoming refactorings of this formatter. Drive-by changes: * Renamed `m_item` to `size_node` for readability; `m_item` suggests it's a member variable, which it is not. >From 4380dedebb00dfbfffe2955482917229f572525c Mon Sep 17 00:00:00 2001 From: Michael Buch <michaelbuc...@gmail.com> Date: Wed, 31 Jan 2024 12:14:20 +0000 Subject: [PATCH] [lldb][DataFormatter][NFC] Use GetFirstValueOfLibCXXCompressedPair in std::map formatter This avoids duplicating the logic to get the first element of a libc++ `__compressed_pair`. This will be useful in upcoming refactorings of this formatter. Drive-by changes: * Renamed `m_item` to `size_node` for readability; `m_item` suggests it's a member variable, which it is not. --- .../Plugins/Language/CPlusPlus/LibCxxMap.cpp | 26 ++++++------------- 1 file changed, 8 insertions(+), 18 deletions(-) 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; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits