@@ -1664,19 +1664,20 @@ let instance_label ~fixed lbl =
1664
1664
1665
1665
(* CR dkalinichenko: we must vary yieldingness together with locality to get
1666
1666
sane behavior around [@local_opt]. Remove once we have mode polymorphism. *)
1667
- let prim_mode' mvar mvar' = function
1667
+ let prim_mode' mvars = function
1668
1668
| Primitive. Prim_global , _ ->
1669
1669
Locality. allow_right Locality. global, None
1670
1670
| Primitive. Prim_local , _ ->
1671
1671
Locality. allow_right Locality. local, None
1672
1672
| Primitive. Prim_poly , _ ->
1673
- match mvar, mvar' with
1674
- | Some mvar , Some mvar' -> mvar , Some mvar'
1675
- | None , _ | _ , None -> assert false
1673
+ match mvars with
1674
+ | Some ( mvar_l , mvar_y ) -> mvar_l , Some mvar_y
1675
+ | None -> assert false
1676
1676
1677
1677
(* Exported version. *)
1678
1678
let prim_mode mvar prim =
1679
- fst (prim_mode' mvar (Some (Yielding. newvar () )) prim)
1679
+ let mvars = Option. map (fun mvar_l -> mvar_l, Yielding. newvar () ) mvar in
1680
+ fst (prim_mode' mvars prim)
1680
1681
1681
1682
(* * Returns a new mode variable whose locality is the given locality and
1682
1683
whose yieldingness is the given yieldingness, while all other axes are
@@ -1723,7 +1724,7 @@ let rec instance_prim_locals locals mvar_l mvar_y macc (loc, yld) ty =
1723
1724
match locals, get_desc ty with
1724
1725
| l :: locals , Tarrow ((lbl ,marg ,mret ),arg ,ret ,commu ) ->
1725
1726
let marg = with_locality_and_yielding
1726
- (prim_mode' (Some mvar_l) ( Some mvar_y) l) marg
1727
+ (prim_mode' (Some ( mvar_l, mvar_y) ) l) marg
1727
1728
in
1728
1729
let macc =
1729
1730
Alloc. join [
@@ -1818,7 +1819,7 @@ let instance_prim_mode (desc : Primitive.description) ty =
1818
1819
List. exists is_poly desc.prim_native_repr_args then
1819
1820
let mode_l = Locality. newvar () in
1820
1821
let mode_y = Yielding. newvar () in
1821
- let finalret = prim_mode' (Some mode_l) ( Some mode_y) desc.prim_native_repr_res in
1822
+ let finalret = prim_mode' (Some ( mode_l, mode_y) ) desc.prim_native_repr_res in
1822
1823
instance_prim_locals desc.prim_native_repr_args
1823
1824
mode_l mode_y (Alloc. disallow_right Alloc. legacy) finalret ty,
1824
1825
Some mode_l, Some mode_y
0 commit comments