From 530faea27c738b89a4a10e303c41e456118c7001 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 11 Oct 2026 01:26:22 +0000 Subject: [PATCH] Guarantee compile-time initialization of scan arena tables --- include/lavik/storage/scan_hash_map.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/include/lavik/storage/scan_hash_map.h b/include/lavik/storage/scan_hash_map.h index 796515ea0..09433a698 100644 --- a/include/lavik/storage/scan_hash_map.h +++ b/include/lavik/storage/scan_hash_map.h @@ -247,11 +247,12 @@ ScanHashMapEntryArena::BuildClassSizes() noexcept { constexpr std::array ScanHashMapEntryArena::BuildClassLookup() noexcept { + constexpr auto sizes = BuildClassSizes(); std::array lookup{}; for (std::size_t units = 0; units < lookup.size(); ++units) { const std::size_t bytes = units * 8; std::size_t index = 0; - while (index + 1 < kClassSizes.size() && kClassSizes[index] < bytes) { + while (index + 1 < sizes.size() && sizes[index] < bytes) { ++index; } lookup[units] = static_cast(index); @@ -259,11 +260,13 @@ ScanHashMapEntryArena::BuildClassLookup() noexcept { return lookup; } -inline const std::array +inline constexpr std::array ScanHashMapEntryArena::kClassSizes = ScanHashMapEntryArena::BuildClassSizes(); -inline const std::array ScanHashMapEntryArena::kClassLookup = - ScanHashMapEntryArena::BuildClassLookup(); +inline constexpr std::array + ScanHashMapEntryArena::kClassLookup = + ScanHashMapEntryArena::BuildClassLookup(); inline ScanHashMapEntryArena::ScanHashMapEntryArena( std::uint32_t maximum_page_id, bool externally_admitted,