diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/zisp/gc/IstrSet.zig | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/zisp/gc/IstrSet.zig b/src/zisp/gc/IstrSet.zig index d6353a0..a97c258 100644 --- a/src/zisp/gc/IstrSet.zig +++ b/src/zisp/gc/IstrSet.zig @@ -191,10 +191,11 @@ fn resize(self: *Set, alloc: Alloc) !void { const new_mask = new_bc - 1; // Make sure we're not in the middle of a cluster - var idx = for (old_bs, 0..) |_, idx| { - const s0 = sector(old_bs, idx, 0); - const s1 = sector(old_bs, idx, 1); - if (s0.hash == 0 or s1.hash == 0) break (idx +% 1) & old_mask; + var idx = b: for (old_bs, 0..) |_, idx| { + inline for (0..bucket_sectors) |s_idx| { + const sec = sector(old_bs, idx, s_idx); + if (sec.hash == 0) break :b (idx +% 1) & old_mask; + } } else unreachable; // Resize strategy guarantees empty slots const idx_last = (idx -% 1) & old_mask; |
