From 47e01b345b6e93a2873c96d0ab7bc38e2fa16b0d Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Thu, 1 Jun 2023 11:58:42 +0900 Subject: [PATCH] Simplified linear probing code (#2066) --- stacker/src/arena_hashmap.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/stacker/src/arena_hashmap.rs b/stacker/src/arena_hashmap.rs index 93c356c39..98d5a4efe 100644 --- a/stacker/src/arena_hashmap.rs +++ b/stacker/src/arena_hashmap.rs @@ -62,25 +62,24 @@ pub struct ArenaHashMap { } struct LinearProbing { - hash: HashType, - i: u32, - mask: u32, + pos: usize, + mask: usize, } impl LinearProbing { #[inline] fn compute(hash: HashType, mask: usize) -> LinearProbing { LinearProbing { - hash, - i: 0, - mask: mask as u32, + pos: hash as usize, + mask, } } #[inline] fn next_probe(&mut self) -> usize { - self.i += 1; - ((self.hash + self.i) & self.mask) as usize + // Not saving the masked version removes a dependency. + self.pos = self.pos.wrapping_add(1); + self.pos & self.mask } }