From fd2a3f9b4a245f01620657f9b4135ebd9f41ce0d Mon Sep 17 00:00:00 2001 From: greg Date: Thu, 31 Mar 2022 11:14:33 -0400 Subject: [PATCH] add some comments --- parallel_hashmap/phmap.h | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/parallel_hashmap/phmap.h b/parallel_hashmap/phmap.h index 7d081b1..3b7f602 100644 --- a/parallel_hashmap/phmap.h +++ b/parallel_hashmap/phmap.h @@ -239,15 +239,19 @@ public: using const_iterator = BitMask; explicit BitMask(T mask) : mask_(mask) {} - BitMask& operator++() { - mask_ &= (mask_ - 1); + + BitMask& operator++() { // ++iterator + mask_ &= (mask_ - 1); // clear the least significant bit set return *this; } + explicit operator bool() const { return mask_ != 0; } uint32_t operator*() const { return LowestBitSet(); } + uint32_t LowestBitSet() const { return priv::TrailingZeros(mask_) >> Shift; } + uint32_t HighestBitSet() const { return (sizeof(T) * CHAR_BIT - priv::LeadingZeros(mask_) - 1) >> Shift; } @@ -286,9 +290,9 @@ using h2_t = uint8_t; // -------------------------------------------------------------------------- enum Ctrl : ctrl_t { - kEmpty = -128, // 0b10000000 - kDeleted = -2, // 0b11111110 - kSentinel = -1, // 0b11111111 + kEmpty = -128, // 0b10000000 or 0x80 + kDeleted = -2, // 0b11111110 or 0xfe + kSentinel = -1, // 0b11111111 or 0xff }; static_assert( @@ -482,12 +486,12 @@ struct GroupPortableImpl return BitMask((x - lsbs) & ~x & msbs); } - BitMask MatchEmpty() const { + BitMask MatchEmpty() const { // bit 1 of each byte is 0 for empty (but not for deleted) constexpr uint64_t msbs = 0x8080808080808080ULL; return BitMask((ctrl & (~ctrl << 6)) & msbs); } - BitMask MatchEmptyOrDeleted() const { + BitMask MatchEmptyOrDeleted() const { // lsb of each byte is 0 for empty or deleted constexpr uint64_t msbs = 0x8080808080808080ULL; return BitMask((ctrl & (~ctrl << 7)) & msbs); }