diff --git a/include/xo/arena/DArenaHashMap.hpp b/include/xo/arena/DArenaHashMap.hpp index e560bdb..c20695e 100644 --- a/include/xo/arena/DArenaHashMap.hpp +++ b/include/xo/arena/DArenaHashMap.hpp @@ -68,7 +68,7 @@ namespace xo { struct HashMapStore : DArenaHashMapUtil { public: using value_type = std::pair; - using group_type = detail::Group; + using group_type = detail::ControlGroup; public: /** group_exp2: number of groups {x, 2^x} **/ @@ -264,7 +264,7 @@ namespace xo { using key_hash = Hash; using key_equal = Equal; using byte = std::byte; - using group_type = detail::Group; + using group_type = detail::ControlGroup; using store_type = detail::HashMapStore; using insert_value_type = std::pair; using iterator = detail::DArenaHashMapIterator; diff --git a/include/xo/arena/hashmap/ControlGroup.hpp b/include/xo/arena/hashmap/ControlGroup.hpp index 2b60a79..d5db66a 100644 --- a/include/xo/arena/hashmap/ControlGroup.hpp +++ b/include/xo/arena/hashmap/ControlGroup.hpp @@ -17,10 +17,11 @@ namespace xo { * * Support optimization using SIMD operations **/ - struct Group { + struct ControlGroup { std::array ctrl_; - explicit Group(uint8_t * lo) { + /** Require: lo is aligned on c_group_size (probably 16 bytes) **/ + explicit ControlGroup(uint8_t * lo) { ::memcpy(ctrl_.data(), lo, DArenaHashMapUtil::c_group_size); }