|
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