Revert "used regular method for group resetting in clear"

This reverts commit eb5351b2c6.
This commit is contained in:
Christian Mazakas
2022-10-17 13:20:01 -07:00
parent cf6f4023bb
commit 27c386d47b

View File

@ -269,7 +269,7 @@ private:
return at(N); return at(N);
} }
alignas(16) __m128i m=_mm_setzero_si128(); alignas(16) __m128i m;
}; };
#elif defined(BOOST_UNORDERED_LITTLE_ENDIAN_NEON) #elif defined(BOOST_UNORDERED_LITTLE_ENDIAN_NEON)
@ -418,7 +418,7 @@ private:
return at(N); return at(N);
} }
alignas(16) int8x16_t m=vdupq_n_s8(0); alignas(16) int8x16_t m;
}; };
#else /* non-SIMD */ #else /* non-SIMD */
@ -583,7 +583,7 @@ private:
return y&0x7FFF; return y&0x7FFF;
} }
alignas(16) boost::uint64_t m[2]={0,0}; alignas(16) boost::uint64_t m[2];
}; };
#endif #endif
@ -1367,6 +1367,9 @@ public:
void clear()noexcept void clear()noexcept
{ {
alignas(group_type) static constexpr unsigned char
zero[sizeof(group_type)]={0,};
auto p=arrays.elements; auto p=arrays.elements;
if(p){ if(p){
for(auto pg=arrays.groups,last=pg+arrays.groups_size_mask+1; for(auto pg=arrays.groups,last=pg+arrays.groups_size_mask+1;
@ -1377,7 +1380,7 @@ public:
mask&=mask-1; mask&=mask-1;
} }
/* we wipe the entire metadata to reset the overflow byte as well */ /* we wipe the entire metadata to reset the overflow byte as well */
*pg=group_type(); *pg=*reinterpret_cast<const group_type*>(zero);
} }
arrays.groups[arrays.groups_size_mask].set_sentinel(); arrays.groups[arrays.groups_size_mask].set_sentinel();
size_=0; size_=0;