mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
make std.HashMap.ensureCapacity round up to the nearest power of two
This commit is contained in:
parent
8b7c59a414
commit
0afa2d040a
@ -141,8 +141,15 @@ pub fn HashMap(comptime K: type, comptime V: type, comptime hash: fn (key: K) u3
|
||||
if (new_capacity <= self.entries.len) {
|
||||
return;
|
||||
}
|
||||
// make sure capacity is a power of two
|
||||
var capacity = new_capacity;
|
||||
const is_power_of_two = capacity & (capacity-1) == 0;
|
||||
if (!is_power_of_two) {
|
||||
const pow = math.log2_int_ceil(usize, capacity);
|
||||
capacity = math.pow(usize, 2, pow);
|
||||
}
|
||||
const old_entries = self.entries;
|
||||
try self.initCapacity(new_capacity);
|
||||
try self.initCapacity(capacity);
|
||||
if (old_entries.len > 0) {
|
||||
// dump all of the old elements into the new table
|
||||
for (old_entries) |*old_entry| {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user