summaryrefslogtreecommitdiff
path: root/stdlib/hashtbl.ml
diff options
context:
space:
mode:
authorFlorian Angeletti <florian.angeletti@inria.fr>2022-05-02 11:11:08 +0200
committerFlorian Angeletti <florian.angeletti@inria.fr>2022-05-03 10:11:09 +0200
commit8216acb42b68342486d13ef1da0527722768dd90 (patch)
tree8fa7692b385aef09b56baf00316ec4cdf35968b4 /stdlib/hashtbl.ml
parentce92d619eacb8a24635d860c252b9f099562c6a2 (diff)
downloadocaml-8216acb42b68342486d13ef1da0527722768dd90.tar.gz
make Hashtbl's randomized atomic
Diffstat (limited to 'stdlib/hashtbl.ml')
-rw-r--r--stdlib/hashtbl.ml10
1 files changed, 5 insertions, 5 deletions
diff --git a/stdlib/hashtbl.ml b/stdlib/hashtbl.ml
index aac9416b62..d1f4ca0bce 100644
--- a/stdlib/hashtbl.ml
+++ b/stdlib/hashtbl.ml
@@ -52,10 +52,10 @@ let randomized_default =
try Sys.getenv "CAMLRUNPARAM" with Not_found -> "" in
String.contains params 'R'
-let randomized = ref randomized_default
+let randomized = Atomic.make randomized_default
-let randomize () = randomized := true
-let is_randomized () = !randomized
+let randomize () = Atomic.set randomized true
+let is_randomized () = Atomic.get randomized
let prng_key = Domain.DLS.new_key Random.State.make_self_init
@@ -70,7 +70,7 @@ let rec power_2_above x n =
else if x * 2 > Sys.max_array_length then x
else power_2_above (x * 2) n
-let create ?(random = !randomized) initial_size =
+let create ?(random = Atomic.get randomized) initial_size =
let s = power_2_above 16 initial_size in
let seed =
if random then Random.State.bits (Domain.DLS.get prng_key) else 0
@@ -616,7 +616,7 @@ let of_seq i =
replace_seq tbl i;
tbl
-let rebuild ?(random = !randomized) h =
+let rebuild ?(random = Atomic.get randomized) h =
let s = power_2_above 16 (Array.length h.data) in
let seed =
if random then Random.State.bits (Domain.DLS.get prng_key)