@ -88,7 +88,7 @@
// +---------------+---------------+---------------+
//
// Each control byte is either a special value for empty slots, deleted slots
// (sometimes called *tombstones*), and a spei cal end-of-table marker used by
// (sometimes called *tombstones*), and a speci al end-of-table marker used by
// iterators, or, if occupied, seven bits (H2) from the hash of the value in the
// corresponding slot.
//
@ -130,7 +130,7 @@
// 7 | 0.191 | 15 | 0.879
//
// The rule of thumb breaks down at around `n = 12`, but such groups would only
// occur for tables close to their load factor. This is far better than an
// occur for tables close to their max load factor. This is far better than an
// ordinary open-addressing table, which needs to perform an == at every step of
// the probe sequence. These probabilities don't tell the full story (for
// example, because elements are inserted into a group from the front, and
@ -155,7 +155,7 @@
// this point, we may `unchecked_insert` the value `x`.
//
// Below, `unchecked_insert` is partly implemented by `prepare_insert`, which
// presents a viable, intialized slot pointee to the caller.
// presents a viable, ini tialized slot pointee to the caller.
//
// `erase` is implemented in terms of `erase_at`, which takes an index to a
// slot. Given an offset, we simply create a tombstone and destroy its contents.
@ -229,7 +229,7 @@ void SwapAlloc(AllocType& /*lhs*/, AllocType& /*rhs*/,
//
// Wrapping around at `mask + 1` is important, but not for the obvious reason.
// As described above, the first few entries of the control byte array
// is mirrored at the end of the array, which `Group` will find and use
// are mirrored at the end of the array, which `Group` will find and use
// for selecting candidates. However, when those candidates' slots are
// actually inspected, there are no corresponding slots for the cloned bytes,
// so we need to make sure we've treated those offsets as "wrapping around".
@ -300,7 +300,7 @@ uint32_t TrailingZeros(T x) {
return static_cast < uint32_t > ( countr_zero ( x ) ) ;
}
// A abstract bitmask, such as that emitted by a SIMD instruction.
// An abstract bitmask, such as that emitted by a SIMD instruction.
//
// Specifically, this type implements a simple bitset whose representation is
// controlled by `SignificantBits` and `Shift`. `SignificantBits` is the number
@ -452,7 +452,7 @@ inline size_t H1(size_t hash, const ctrl_t* ctrl) {
// Extracts the H2 portion of a hash: the 7 bits not used for H1.
//
// Thse are used used as an occupied control byte.
// The se are used as an occupied control byte.
inline h2_t H2 ( size_t hash ) { return hash & 0x7F ; }
// Helpers for checking the state of a control byte.
@ -462,7 +462,7 @@ inline bool IsDeleted(ctrl_t c) { return c == ctrl_t::kDeleted; }
inline bool IsEmptyOrDeleted ( ctrl_t c ) { return c < ctrl_t : : kSentinel ; }
# if ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2
// Quick eference guide for intrinsics used below:
// Quick r eference guide for intrinsics used below:
//
// * __m128i: An XMM (128-bit) word.
//
@ -479,7 +479,7 @@ inline bool IsEmptyOrDeleted(ctrl_t c) { return c < ctrl_t::kSentinel; }
// * _mm_cmpgt_epi8: Same as above, but using > rather than ==.
//
// * _mm_loadu_si128: Performs an unaligned load of an i128.
// * _mm_storeu_si128: Performs an unaligned store of a i128.
// * _mm_storeu_si128: Performs an unaligned store of an i128.
//
// * _mm_sign_epi8: Retains, negates, or zeroes each i8 lane of the first
// argument if the corresponding lane of the second
@ -731,7 +731,7 @@ struct FindInfo {
// In small mode only the first `capacity` control bytes after the sentinel
// are valid. The rest contain dummy ctrl_t::kEmpty values that do not
// represent a real slot. This is important to take into account on
// `find_first_or_n ull()`, where we never try
// `find_first_non_f ull()`, where we never try
// `ShouldInsertBackwards()` for small tables.
inline bool is_small ( size_t capacity ) { return capacity < Group : : kWidth - 1 ; }
@ -778,7 +778,7 @@ inline FindInfo find_first_non_full(const ctrl_t* ctrl, size_t hash,
extern template FindInfo find_first_non_full ( const ctrl_t * , size_t , size_t ) ;
// Sets `ctrl` to `{kEmpty, kSentinel, ..., kEmpty}`, marking the entire
// array as deleted .
// array as marked as empty .
inline void ResetCtrl ( size_t capacity , ctrl_t * ctrl , const void * slot ,
size_t slot_size ) {
std : : memset ( ctrl , static_cast < int8_t > ( ctrl_t : : kEmpty ) ,