additional fix for #454 on OCaml 4.10..4.12

This commit is contained in:
Simon Cruanes 2024-11-18 12:20:53 -05:00
parent 477e9cc7ca
commit f02df05b35
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4

View file

@ -119,10 +119,20 @@ let clear_and_reset v =
let[@inline] is_empty v = v.size = 0 let[@inline] is_empty v = v.size = 0
[@@@ifge 4.13]
let[@inline] push_unsafe_ v x = let[@inline] push_unsafe_ v x =
Sys.opaque_identity (Array.unsafe_set v.vec v.size x);
v.size <- v.size + 1
[@@@else_]
let[@inline never] push_unsafe_ v x =
Array.unsafe_set v.vec v.size x; Array.unsafe_set v.vec v.size x;
v.size <- v.size + 1 v.size <- v.size + 1
[@@@endif]
let push v x = let push v x =
if v.size = Array.length v.vec then grow_with_ v ~filler:x; if v.size = Array.length v.vec then grow_with_ v ~filler:x;
push_unsafe_ v x push_unsafe_ v x
@ -174,6 +184,8 @@ let append a b =
a.size <- a.size + b.size a.size <- a.size + b.size
) )
[@@@ifge 4.13]
let[@inline] get v i = let[@inline] get v i =
if i < 0 || i >= v.size then invalid_arg "CCVector.get"; if i < 0 || i >= v.size then invalid_arg "CCVector.get";
(* NOTE: over eager inlining seems to miscompile for int32 at least (#454) *) (* NOTE: over eager inlining seems to miscompile for int32 at least (#454) *)
@ -183,6 +195,18 @@ let[@inline] set v i x =
if i < 0 || i >= v.size then invalid_arg "CCVector.set"; if i < 0 || i >= v.size then invalid_arg "CCVector.set";
Array.unsafe_set v.vec i x Array.unsafe_set v.vec i x
[@@@else_]
let[@inline never] get v i =
if i < 0 || i >= v.size then invalid_arg "CCVector.get";
Array.unsafe_get v.vec i
let[@inline never] set v i x =
if i < 0 || i >= v.size then invalid_arg "CCVector.set";
Array.unsafe_set v.vec i x
[@@@endif]
let remove_and_shift v i = let remove_and_shift v i =
if i < 0 || i >= v.size then invalid_arg "CCVector.remove"; if i < 0 || i >= v.size then invalid_arg "CCVector.remove";
(* if v.(i) not the last element, then put last element at index i *) (* if v.(i) not the last element, then put last element at index i *)