From 2724144e7d31416fb66578b5aa166eb80963b3a9 Mon Sep 17 00:00:00 2001 From: Mark Shinwell Date: Mon, 10 Apr 2023 16:06:20 +0100 Subject: [PATCH] Example --- up.ml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/up.ml b/up.ml index ae85198190c..2edcc7e42ab 100644 --- a/up.ml +++ b/up.ml @@ -1,7 +1,7 @@ external make_unboxed_pair_v_v : 'a -> 'b -> ('a, 'b) unboxed_pair = "%make_unboxed_pair_v_v" external unboxed_pair_field_0_v_v : ('a, 'b) unboxed_pair -> 'a = "%unboxed_pair_field_0_v_v" external unboxed_pair_field_1_v_v : ('a, 'b) unboxed_pair -> 'b = "%unboxed_pair_field_1_v_v" -(* + let f i x y = let p = make_unboxed_pair_v_v x y in if i < 0 then unboxed_pair_field_0_v_v p @@ -37,12 +37,11 @@ let h i x y = in if i < 0 then unboxed_pair_field_0_v_v r else unboxed_pair_field_1_v_v r - *) external make_unboxed_pair_i_i : 'a -> 'b -> ('a, 'b) unboxed_pair = "%make_unboxed_pair_i_i" external unboxed_pair_field_0_i_i : ('a, 'b) unboxed_pair -> 'a = "%unboxed_pair_field_0_i_i" external unboxed_pair_field_1_i_i : ('a, 'b) unboxed_pair -> 'b = "%unboxed_pair_field_1_i_i" -(* + let[@inline never] takes_unboxed_pair (p : (int, int) unboxed_pair) = let p0 = unboxed_pair_field_0_i_i p in let p1 = unboxed_pair_field_1_i_i p in @@ -74,7 +73,6 @@ let make_partial x y = let () = Printf.printf "%d\n%!" (make_partial 100 42) - *) let[@inline never] returns_unboxed_pair_not_inlined x = if x < 0 then make_unboxed_pair_i_i x x @@ -92,3 +90,6 @@ let call_function_returning_unboxed_pair x = let p2_0 = unboxed_pair_field_0_i_i p2 in let p2_1 = unboxed_pair_field_1_i_i p2 in p1_0 + p1_1 + p2_0 + p2_1 + +let () = + Printf.printf "%d\n%!" (call_function_returning_unboxed_pair 42)