summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/zisp/gc/IstrSet.zig9
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;