|
1 |
| -{-# language MagicHash #-} |
2 |
| -{-# language UnboxedTuples #-} |
| 1 | +{-# LANGUAGE MagicHash #-} |
| 2 | +{-# LANGUAGE UnboxedTuples #-} |
3 | 3 |
|
4 | 4 | module Compat
|
5 | 5 | ( unsafeShrinkAndFreeze
|
6 | 6 | , unsafeShrinkAndFreeze#
|
7 | 7 | ) where
|
8 | 8 |
|
9 |
| -import Data.Primitive (SmallArray(..),SmallMutableArray(..)) |
10 |
| -import GHC.Exts (SmallArray#,SmallMutableArray#,Int(I#)) |
11 |
| -import GHC.Exts (State#,Int#) |
12 |
| -import GHC.ST (ST(ST)) |
| 9 | +import Data.Primitive (SmallArray (..), SmallMutableArray (..)) |
| 10 | +import GHC.Exts (Int (I#), Int#, SmallArray#, SmallMutableArray#, State#) |
| 11 | +import GHC.ST (ST (ST)) |
13 | 12 |
|
14 | 13 | import qualified GHC.Exts as Exts
|
15 | 14 |
|
16 | 15 | -- Shrink the mutable array in place and then freeze it.
|
17 | 16 | -- The argument must not be reused after being passed to
|
18 | 17 | -- this function.
|
19 | 18 | unsafeShrinkAndFreeze ::
|
20 |
| - SmallMutableArray s a |
21 |
| - -> Int |
22 |
| - -> ST s (SmallArray a) |
23 |
| -{-# inline unsafeShrinkAndFreeze #-} |
24 |
| -unsafeShrinkAndFreeze (SmallMutableArray x) (I# n) = ST |
25 |
| - (\s0 -> case Exts.shrinkSmallMutableArray# x n s0 of |
26 |
| - s1 -> case Exts.unsafeFreezeSmallArray# x s1 of |
27 |
| - (# s2, r #) -> (# s2, SmallArray r #) |
28 |
| - ) |
| 19 | + SmallMutableArray s a -> |
| 20 | + Int -> |
| 21 | + ST s (SmallArray a) |
| 22 | +{-# INLINE unsafeShrinkAndFreeze #-} |
| 23 | +unsafeShrinkAndFreeze (SmallMutableArray x) (I# n) = |
| 24 | + ST |
| 25 | + ( \s0 -> case Exts.shrinkSmallMutableArray# x n s0 of |
| 26 | + s1 -> case Exts.unsafeFreezeSmallArray# x s1 of |
| 27 | + (# s2, r #) -> (# s2, SmallArray r #) |
| 28 | + ) |
29 | 29 |
|
30 | 30 | unsafeShrinkAndFreeze# ::
|
31 |
| - SmallMutableArray# s a |
32 |
| - -> Int# |
33 |
| - -> State# s |
34 |
| - -> (# State# s, SmallArray# a #) |
35 |
| -{-# inline unsafeShrinkAndFreeze# #-} |
| 31 | + SmallMutableArray# s a -> |
| 32 | + Int# -> |
| 33 | + State# s -> |
| 34 | + (# State# s, SmallArray# a #) |
| 35 | +{-# INLINE unsafeShrinkAndFreeze# #-} |
36 | 36 | unsafeShrinkAndFreeze# x n s0 =
|
37 | 37 | case Exts.shrinkSmallMutableArray# x n s0 of
|
38 | 38 | s1 -> Exts.unsafeFreezeSmallArray# x s1
|
0 commit comments