in csrc/suffix_decoding/int32_map.h [364:387]
void rehash_(uint32_t new_cap) {
assert((new_cap & (new_cap - 1)) == 0 && new_cap >= MIN_CAPACITY);
Slot* fresh = new Slot[new_cap]; // keys default to KEY_EMPTY
if (slots_) {
for (uint32_t i = 0; i < cap_; ++i) {
auto& s = slots_[i];
if (!is_filled_(s.key)) {
continue;
}
int32_t k = s.key;
T* v = value_ptr_(s);
place_new_(fresh, new_cap, k, std::move(*v));
v->~T();
s.key = KEY_EMPTY;
}
delete[] slots_;
}
slots_ = fresh;
cap_ = new_cap;
tombstones_ = 0; // cleaned
// size_ unchanged
}