Cache page
Bigfoot / Build & Test Debug with ./ConanProfiles/clang (Unity Build: OFF) (push) Successful in 5m44s
Bigfoot / Build & Test Debug with ./ConanProfiles/clang (Unity Build: ON) (push) Successful in 5m49s
Bigfoot / Build & Test Debug with ./ConanProfiles/clang_asan (Unity Build: OFF) (push) Successful in 6m10s
Bigfoot / Build & Test Debug with ./ConanProfiles/clang_asan (Unity Build: ON) (push) Successful in 6m8s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/clang (Unity Build: OFF) (push) Successful in 6m20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/clang (Unity Build: ON) (push) Successful in 6m16s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/clang_asan (Unity Build: OFF) (push) Successful in 7m29s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/clang_asan (Unity Build: ON) (push) Successful in 7m26s
Bigfoot / Build & Test Release with ./ConanProfiles/clang (Unity Build: OFF) (push) Successful in 6m14s
Bigfoot / Build & Test Release with ./ConanProfiles/clang (Unity Build: ON) (push) Successful in 6m11s
Bigfoot / Build & Test Release with ./ConanProfiles/clang_asan (Unity Build: OFF) (push) Successful in 7m7s
Bigfoot / Build & Test Release with ./ConanProfiles/clang_asan (Unity Build: ON) (push) Successful in 7m5s
Bigfoot / Clang Format Checks (push) Failing after 12s

This commit is contained in:
2026-08-09 16:25:45 +02:00
parent ccd256f87f
commit aea18bb048
@@ -476,17 +476,20 @@ class StableSlotMap: public SlotMapBase
{ {
for (; p_pageIndex < m_map->m_pages.size(); ++p_pageIndex) for (; p_pageIndex < m_map->m_pages.size(); ++p_pageIndex)
{ {
const std::size_t offset = m_map->m_pages[p_pageIndex]->m_occupied.find_first(); Page* const page = m_map->m_pages[p_pageIndex].get();
const std::size_t offset = page->m_occupied.find_first();
if (offset != PAGE_SIZE) if (offset != PAGE_SIZE)
{ {
m_pageIndex = p_pageIndex; m_pageIndex = p_pageIndex;
m_page = page;
m_offset = offset; m_offset = offset;
m_current = m_map->m_pages[p_pageIndex]->SlotAt(offset); m_current = page->SlotAt(offset);
return; return;
} }
} }
m_pageIndex = m_map->m_pages.size(); m_pageIndex = m_map->m_pages.size();
m_page = nullptr;
m_offset = 0; m_offset = 0;
m_current = nullptr; m_current = nullptr;
} }
@@ -495,12 +498,14 @@ class StableSlotMap: public SlotMapBase
{ {
for (;;) for (;;)
{ {
const std::size_t offset = m_map->m_pages[p_pageIndex]->m_occupied.find_last(); Page* const page = m_map->m_pages[p_pageIndex].get();
const std::size_t offset = page->m_occupied.find_last();
if (offset != PAGE_SIZE) if (offset != PAGE_SIZE)
{ {
m_pageIndex = p_pageIndex; m_pageIndex = p_pageIndex;
m_page = page;
m_offset = offset; m_offset = offset;
m_current = m_map->m_pages[p_pageIndex]->SlotAt(offset); m_current = page->SlotAt(offset);
return; return;
} }
@@ -514,11 +519,11 @@ class StableSlotMap: public SlotMapBase
void Advance() void Advance()
{ {
const std::size_t offset = m_map->m_pages[m_pageIndex]->m_occupied.find_next(m_offset); const std::size_t offset = m_page->m_occupied.find_next(m_offset);
if (offset != PAGE_SIZE) if (offset != PAGE_SIZE)
{ {
m_offset = offset; m_offset = offset;
m_current = m_map->m_pages[m_pageIndex]->SlotAt(offset); m_current = m_page->SlotAt(offset);
return; return;
} }
@@ -533,11 +538,11 @@ class StableSlotMap: public SlotMapBase
return; return;
} }
const std::size_t offset = m_map->m_pages[m_pageIndex]->m_occupied.find_prev(m_offset); const std::size_t offset = m_page->m_occupied.find_prev(m_offset);
if (offset != PAGE_SIZE) if (offset != PAGE_SIZE)
{ {
m_offset = offset; m_offset = offset;
m_current = m_map->m_pages[m_pageIndex]->SlotAt(offset); m_current = m_page->SlotAt(offset);
return; return;
} }
@@ -549,6 +554,7 @@ class StableSlotMap: public SlotMapBase
} }
StableSlotMap* m_map = nullptr; StableSlotMap* m_map = nullptr;
Page* m_page = nullptr;
std::size_t m_pageIndex = 0; std::size_t m_pageIndex = 0;
std::size_t m_offset = 0; std::size_t m_offset = 0;
TYPE* m_current = nullptr; TYPE* m_current = nullptr;
@@ -621,17 +627,20 @@ class StableSlotMap: public SlotMapBase
{ {
for (; p_pageIndex < m_map->m_pages.size(); ++p_pageIndex) for (; p_pageIndex < m_map->m_pages.size(); ++p_pageIndex)
{ {
const std::size_t offset = m_map->m_pages[p_pageIndex]->m_occupied.find_first(); const Page* const page = m_map->m_pages[p_pageIndex].get();
const std::size_t offset = page->m_occupied.find_first();
if (offset != PAGE_SIZE) if (offset != PAGE_SIZE)
{ {
m_pageIndex = p_pageIndex; m_pageIndex = p_pageIndex;
m_page = page;
m_offset = offset; m_offset = offset;
m_current = m_map->m_pages[p_pageIndex]->SlotAt(offset); m_current = page->SlotAt(offset);
return; return;
} }
} }
m_pageIndex = m_map->m_pages.size(); m_pageIndex = m_map->m_pages.size();
m_page = nullptr;
m_offset = 0; m_offset = 0;
m_current = nullptr; m_current = nullptr;
} }
@@ -640,12 +649,14 @@ class StableSlotMap: public SlotMapBase
{ {
for (;;) for (;;)
{ {
const std::size_t offset = m_map->m_pages[p_pageIndex]->m_occupied.find_last(); const Page* const page = m_map->m_pages[p_pageIndex].get();
const std::size_t offset = page->m_occupied.find_last();
if (offset != PAGE_SIZE) if (offset != PAGE_SIZE)
{ {
m_pageIndex = p_pageIndex; m_pageIndex = p_pageIndex;
m_page = page;
m_offset = offset; m_offset = offset;
m_current = m_map->m_pages[p_pageIndex]->SlotAt(offset); m_current = page->SlotAt(offset);
return; return;
} }
@@ -659,11 +670,11 @@ class StableSlotMap: public SlotMapBase
void Advance() void Advance()
{ {
const std::size_t offset = m_map->m_pages[m_pageIndex]->m_occupied.find_next(m_offset); const std::size_t offset = m_page->m_occupied.find_next(m_offset);
if (offset != PAGE_SIZE) if (offset != PAGE_SIZE)
{ {
m_offset = offset; m_offset = offset;
m_current = m_map->m_pages[m_pageIndex]->SlotAt(offset); m_current = m_page->SlotAt(offset);
return; return;
} }
@@ -678,11 +689,11 @@ class StableSlotMap: public SlotMapBase
return; return;
} }
const std::size_t offset = m_map->m_pages[m_pageIndex]->m_occupied.find_prev(m_offset); const std::size_t offset = m_page->m_occupied.find_prev(m_offset);
if (offset != PAGE_SIZE) if (offset != PAGE_SIZE)
{ {
m_offset = offset; m_offset = offset;
m_current = m_map->m_pages[m_pageIndex]->SlotAt(offset); m_current = m_page->SlotAt(offset);
return; return;
} }
@@ -694,6 +705,7 @@ class StableSlotMap: public SlotMapBase
} }
const StableSlotMap* m_map = nullptr; const StableSlotMap* m_map = nullptr;
const Page* m_page = nullptr;
std::size_t m_pageIndex = 0; std::size_t m_pageIndex = 0;
std::size_t m_offset = 0; std::size_t m_offset = 0;
const TYPE* m_current = nullptr; const TYPE* m_current = nullptr;