Skip to content

Instantly share code, notes, and snippets.

@utdemir
Created June 10, 2021 13:07
Show Gist options
  • Save utdemir/cec11c89c6eb609244a8cc95cec9614e to your computer and use it in GitHub Desktop.
Save utdemir/cec11c89c6eb609244a8cc95cec9614e to your computer and use it in GitHub Desktop.
get :: Int -> Array# a %1-> (# Ur a, Array# a #)
get (GHC.I# i) = Unsafe.toLinear go
where
go :: Array# a -> (# Ur a, Array# a #)
go (Array# arr) =
case GHC.runRW# (GHC.readArray# arr i) of
(# _, ret #) -> (# Ur ret, Array# arr #)
{-# NOINLINE get #-} -- prevents the runRW# effect from being reordered
---------
-- STG --
---------
-- RHS size: {terms: 24, types: 43, coercions: 28, joins: 0/3}
Data.Array.Mutable.Unlifted.Linear.get [InlPrag=INLINE (sat-args=1)]
:: forall a.
GHC.Types.Int
-> Data.Array.Mutable.Unlifted.Linear.Array# a
%1 -> (# Data.Unrestricted.Internal.Ur.Ur a,
Data.Array.Mutable.Unlifted.Linear.Array# a #)
[GblId, Arity=1, Str=<1P(L)>, Unf=OtherCon []]
Data.Array.Mutable.Unlifted.Linear.get
= \ (@a_a1by) (ds_s1pJ [Occ=Once1!] :: GHC.Types.Int) ->
case ds_s1pJ of { GHC.Types.I# i_s1pL [Occ=OnceL1] ->
let {
sat_s1pT [Occ=Once1]
:: Data.Array.Mutable.Unlifted.Linear.Array# a_a1by
-> (# Data.Unrestricted.Internal.Ur.Ur a_a1by,
Data.Array.Mutable.Unlifted.Linear.Array# a_a1by #)
[LclId]
sat_s1pT
= \ (ds1_s1pO
:: Data.Array.Mutable.Unlifted.Linear.Array# a_a1by) ->
case GHC.Prim.readArray#
@GHC.Prim.RealWorld
@a_a1by
(ds1_s1pO
`cast` (Data.Array.Mutable.Unlifted.Linear.N:Array#[0] <a_a1by>_N
:: Data.Array.Mutable.Unlifted.Linear.Array# a_a1by
~R# GHC.Prim.MutableArray# GHC.Prim.RealWorld a_a1by))
i_s1pL
GHC.Prim.realWorld#
of
{ (# _ [Occ=Dead], ipv1_s1pR [Occ=Once1] #) ->
let {
sat_s1pS [Occ=Once1] :: Data.Unrestricted.Internal.Ur.Ur a_a1by
[LclId]
sat_s1pS = Data.Unrestricted.Internal.Ur.Ur @a_a1by ipv1_s1pR } in
(# sat_s1pS, ds1_s1pO #)
} } in
let {
sat_s1pN [Occ=Once1] :: GHC.Types.Any -> GHC.Types.Any
[LclId]
sat_s1pN
= \ (x_s1pM [Occ=Once1, OS=OneShot] :: GHC.Types.Any) ->
x_s1pM } in
(sat_s1pN
`cast` (Sub (Sym Univ(nominal CorePrep
:: (Data.Array.Mutable.Unlifted.Linear.Array# a_a1by
-> (# Data.Unrestricted.Internal.Ur.Ur a_a1by,
Data.Array.Mutable.Unlifted.Linear.Array# a_a1by #))
%1 -> Data.Array.Mutable.Unlifted.Linear.Array# a_a1by
%1 -> (# Data.Unrestricted.Internal.Ur.Ur a_a1by,
Data.Array.Mutable.Unlifted.Linear.Array#
a_a1by #), GHC.Types.Any -> GHC.Types.Any))
:: (GHC.Types.Any -> GHC.Types.Any)
~R# ((Data.Array.Mutable.Unlifted.Linear.Array# a_a1by
-> (# Data.Unrestricted.Internal.Ur.Ur a_a1by,
Data.Array.Mutable.Unlifted.Linear.Array# a_a1by #))
%1 -> Data.Array.Mutable.Unlifted.Linear.Array# a_a1by
%1 -> (# Data.Unrestricted.Internal.Ur.Ur a_a1by,
Data.Array.Mutable.Unlifted.Linear.Array# a_a1by #))))
sat_s1pT
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment