| 156 | |
| 157 | |
| 158 | __hot |
| 159 | ConcurrentMap::result ConcurrentMap::find(slice key, hash_t hash) const noexcept { |
| 160 | assert_precondition(key); |
| 161 | for (int i = indexOfHash(hash); true; i = wrap(i + 1)) { |
| 162 | Entry current = _entries[i]; |
| 163 | switch (current.keyOffset) { |
| 164 | case kEmptyKeyOffset: |
| 165 | return {}; |
| 166 | case kDeletedKeyOffset: |
| 167 | break; |
| 168 | default: |
| 169 | if (auto keyPtr = offsetToKey(current.keyOffset); equalKeys(keyPtr, key)) |
| 170 | return {slice(keyPtr, key.size), current.value}; |
| 171 | break; |
| 172 | } |
| 173 | } |
| 174 | } |
| 175 | |
| 176 | |
| 177 | __hot |