| 75 | } |
| 76 | |
| 77 | size_t find(void *key) const { |
| 78 | size_t mask = capacity - 1; |
| 79 | size_t i = mix(key) & mask; |
| 80 | size_t first_tomb = SIZE_MAX; |
| 81 | while (true) { |
| 82 | void *k = entries[i].key; |
| 83 | if (k == nullptr) return (first_tomb != SIZE_MAX) ? first_tomb : i; |
| 84 | if (k == key) return i; |
| 85 | if (k == kTombstone && first_tomb == SIZE_MAX) first_tomb = i; |
| 86 | i = (i + 1) & mask; |
| 87 | } |
| 88 | } |
| 89 | |
| 90 | void rehash(size_t new_cap) { |
| 91 | Entry *old_entries = entries; |
no outgoing calls
no test coverage detected