Skip to content

Commit

Permalink
Move private function used only once out of module scope
Browse files Browse the repository at this point in the history
  • Loading branch information
polytypic committed Oct 13, 2024
1 parent afca10e commit b0dd439
Showing 1 changed file with 10 additions and 12 deletions.
22 changes: 10 additions & 12 deletions lib/countdown.ml
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,18 @@ module Atomic = Multicore_magic.Transparent_atomic

type t = int Atomic.t array

let ceil_pow_2_minus_1 n =
let n = Nativeint.of_int n in
let n = Nativeint.logor n (Nativeint.shift_right_logical n 1) in
let n = Nativeint.logor n (Nativeint.shift_right_logical n 2) in
let n = Nativeint.logor n (Nativeint.shift_right_logical n 4) in
let n = Nativeint.logor n (Nativeint.shift_right_logical n 8) in
let n = Nativeint.logor n (Nativeint.shift_right_logical n 16) in
Nativeint.to_int
(if Sys.int_size > 32 then
Nativeint.logor n (Nativeint.shift_right_logical n 32)
else n)

let create ~n_domains () =
if n_domains < 1 then invalid_arg "n_domains < 1";
let ceil_pow_2_minus_1 n =
let open Nativeint in
let n = of_int n in
let n = logor n (shift_right_logical n 1) in
let n = logor n (shift_right_logical n 2) in
let n = logor n (shift_right_logical n 4) in
let n = logor n (shift_right_logical n 8) in
let n = logor n (shift_right_logical n 16) in
to_int (if Sys.int_size > 32 then logor n (shift_right_logical n 32) else n)
in
let n = ceil_pow_2_minus_1 n_domains in
let atomics = Array.init n_domains (fun _ -> Atomic.make_contended 0) in
Array.init n @@ fun i -> Array.unsafe_get atomics (i mod n_domains)
Expand Down

0 comments on commit b0dd439

Please sign in to comment.