summaryrefslogtreecommitdiff
path: root/stdlib/int32.ml
diff options
context:
space:
mode:
authorFabian <copy@copy.sh>2021-03-02 11:14:59 -0600
committerGitHub <noreply@github.com>2021-03-02 17:14:59 +0000
commita477306691d1230e0d9e84015a5ab7ff28d108b2 (patch)
tree3e8bca2372ac3089263f9c8d1added976e0878ea /stdlib/int32.ml
parent685f14c695ff64f849d9e0274d75ad72b4914d75 (diff)
downloadocaml-a477306691d1230e0d9e84015a5ab7ff28d108b2.tar.gz
Optimise Int32.unsigned_to_int on 64-bit (#10244)
Diffstat (limited to 'stdlib/int32.ml')
-rw-r--r--stdlib/int32.ml4
1 files changed, 2 insertions, 2 deletions
diff --git a/stdlib/int32.ml b/stdlib/int32.ml
index e159851e5a..79864d6d3d 100644
--- a/stdlib/int32.ml
+++ b/stdlib/int32.ml
@@ -63,8 +63,8 @@ let unsigned_to_int =
None
| 64 ->
(* So that it compiles in 32-bit *)
- let move = int_of_string "0x1_0000_0000" in
- fun n -> let i = to_int n in Some (if i < 0 then i + move else i)
+ let mask = 0xFFFF lsl 16 lor 0xFFFF in
+ fun n -> Some (to_int n land mask)
| _ ->
assert false