Skip to content

Commit

Permalink
Example
Browse files Browse the repository at this point in the history
  • Loading branch information
mshinwell committed Apr 10, 2023
1 parent ace2e00 commit 2724144
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions up.ml
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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)

0 comments on commit 2724144

Please sign in to comment.