From 372b911f20b2203c0a3e4c61cfcf0a8e3b3a6590 Mon Sep 17 00:00:00 2001 From: Muki Kiboigo Date: Mon, 30 Mar 2026 08:39:56 -0700 Subject: [PATCH] use wyhash for power of two lock stripes --- src/network/cache/FsCache.zig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/network/cache/FsCache.zig b/src/network/cache/FsCache.zig index 4fd53e2f..2f800be8 100644 --- a/src/network/cache/FsCache.zig +++ b/src/network/cache/FsCache.zig @@ -25,6 +25,9 @@ const CachedResponse = Cache.CachedResponse; const CACHE_VERSION: usize = 1; const LOCK_STRIPES = 16; +comptime { + std.debug.assert(std.math.isPowerOfTwo(LOCK_STRIPES)); +} pub const FsCache = @This(); @@ -37,7 +40,7 @@ const CacheMetadataFile = struct { }; fn getLockPtr(self: *FsCache, key: *const [HASHED_KEY_LEN]u8) *std.Thread.Mutex { - const lock_idx: usize = @truncate(std.hash.Wyhash.hash(0, key) % LOCK_STRIPES); + const lock_idx = std.hash.Wyhash.hash(0, key[0..]) & (LOCK_STRIPES - 1); return &self.locks[lock_idx]; }