Skip to content

Commit 2347eda

Browse files
ejgallegohhugo
authored andcommitted
[Misc] fix splay
1 parent 7e8208b commit 2347eda

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

benchmarks/sources/ml/splay.ml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -186,15 +186,24 @@ let rec generatePayloadTree depth tag =
186186

187187
let random =
188188
let seed = ref 49734321 in
189+
let mask_32bit =
190+
match Sys.int_size with
191+
| 31 | 32 -> -1
192+
| _ -> int_of_string "0xffffffff"
193+
in
194+
let l_0xc761c23c = int_of_string "0xc761c23c" in
195+
let l_0xd3a2646c = int_of_string "0xd3a2646c" in
196+
let l_0xfd7046c5 = int_of_string "0xfd7046c5" in
197+
let l_0xb55a4f09 = int_of_string "0xb55a4f09" in
189198
fun () ->
190199
(* // Robert Jenkins' 32 bit integer hash function. *)
191200
let s = !seed in
192-
let s = (s + 0x7ed55d16 + (s lsl 12)) land 0xffffffff in
193-
let s = s lxor 0xc761c23c lxor (s lsr 19) in
201+
let s = (s + 0x7ed55d16 + (s lsl 12)) land mask_32bit in
202+
let s = s lxor l_0xc761c23c lxor (s lsr 19) in
194203
let s = s + 0x165667b1 + (s lsl 5) in
195-
let s = (s + 0xd3a2646c) lxor (s lsl 9) in
196-
let s = (s + 0xfd7046c5 + (s lsl 3)) land 0xffffffff in
197-
let s = s lxor 0xb55a4f09 lxor (s lsr 16) in
204+
let s = (s + l_0xd3a2646c) lxor (s lsl 9) in
205+
let s = (s + l_0xfd7046c5 + (s lsl 3)) land mask_32bit in
206+
let s = s lxor l_0xb55a4f09 lxor (s lsr 16) in
198207
seed := s;
199208
float (s land 0xfffffff) /. float 0x10000000
200209

0 commit comments

Comments
 (0)