From ca30a2dfe94452e4e48f6de972cff00f10105b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Fri, 5 Jun 2026 10:43:29 +0200 Subject: [PATCH] Fix wrong prefetch command --- include/boost/container/experimental/nest.hpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/include/boost/container/experimental/nest.hpp b/include/boost/container/experimental/nest.hpp index cd0e2f8..7e7fc44 100644 --- a/include/boost/container/experimental/nest.hpp +++ b/include/boost/container/experimental/nest.hpp @@ -708,8 +708,10 @@ public: pbb = pbb->next; BOOST_IF_CONSTEXPR(Prefetch) { //Load next critical metadata - block_type& pbn = static_cast(*pbb->next); - BOOST_CONTAINER_NEST_PREFETCH(&pbn.next->mask); + block_base_type& pbn = static_cast(*pbb->next); + //Prefetch the next block's metadata plus the data + BOOST_CONTAINER_NEST_PREFETCH(&pbn.next); + BOOST_CONTAINER_NEST_PREFETCH_BLOCK(&pbn); } mask = pbb->mask; } @@ -730,8 +732,9 @@ public: pbb = pbb->prev; BOOST_IF_CONSTEXPR(Prefetch) { //Load next data - block_type& pbn = static_cast(*pbb->prev); - BOOST_CONTAINER_NEST_PREFETCH(&pbn.prev->mask); + block_base_type& pbn = static_cast(*pbb->prev); + BOOST_CONTAINER_NEST_PREFETCH(&pbn.prev); + BOOST_CONTAINER_NEST_PREFETCH_BLOCK(&pbn); } mask = pbb->mask; } @@ -774,7 +777,7 @@ private: ::type const_block_base_pointer; typedef typename nest_detail::pointer_rebind ::type nonconst_pointer; - typedef nest_detail::block block_type; + typedef nest_detail::block block_type; typedef typename block_base_type::mask_type mask_type; BOOST_STATIC_CONSTEXPR std::size_t N = block_base_type::N;