Skip to content

Commit 3ed977d

Browse files
committed
extend/narrow primops were renamed
1 parent 1015d0d commit 3ed977d

File tree

6 files changed

+75
-64
lines changed

6 files changed

+75
-64
lines changed

Data/Text/Internal/Encoding/Utf16.hs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
{-# LANGUAGE MagicHash, BangPatterns, CPP #-}
1+
{-# LANGUAGE CPP #-}
2+
{-# LANGUAGE MagicHash #-}
3+
{-# LANGUAGE BangPatterns #-}
24

35
-- |
46
-- Module : Data.Text.Internal.Encoding.Utf16
@@ -23,22 +25,19 @@ module Data.Text.Internal.Encoding.Utf16
2325
, validate2
2426
) where
2527

26-
import GHC.Word (Word16(..))
27-
#if MIN_VERSION_base(4,16,0)
2828
import GHC.Exts
29-
#else
30-
import GHC.Exts hiding (extendWord16#)
31-
import GHC.Prim (Word#)
32-
extendWord16# :: Word# -> Word#
33-
extendWord16# w = w
34-
{-# INLINE extendWord16# #-}
29+
import GHC.Word (Word16(..))
30+
31+
#if !MIN_VERSION_base(4,16,0)
32+
-- harmless to import, except for warnings that it is unused.
33+
import Data.Text.Internal.PrimCompat ( word16ToWord# )
3534
#endif
3635

3736
chr2 :: Word16 -> Word16 -> Char
3837
chr2 (W16# a#) (W16# b#) = C# (chr# (upper# +# lower# +# 0x10000#))
3938
where
40-
!x# = word2Int# (extendWord16# a#)
41-
!y# = word2Int# (extendWord16# b#)
39+
!x# = word2Int# (word16ToWord# a#)
40+
!y# = word2Int# (word16ToWord# b#)
4241
!upper# = uncheckedIShiftL# (x# -# 0xD800#) 10#
4342
!lower# = y# -# 0xDC00#
4443
{-# INLINE chr2 #-}

Data/Text/Internal/Encoding/Utf8.hs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,12 @@ import Control.Exception (assert)
4343
import Data.Bits ((.&.))
4444
import Data.Text.Internal.Unsafe.Char (ord)
4545
import Data.Text.Internal.Unsafe.Shift (shiftR)
46+
import GHC.Exts
4647
import GHC.Word (Word8(..))
4748

48-
#if MIN_VERSION_base(4,16,0)
49-
import GHC.Exts
50-
#else
51-
import GHC.Exts hiding ( extendWord8# )
52-
extendWord8# :: Word# -> Word#
53-
extendWord8# w = w
54-
{-# INLINE extendWord8# #-}
49+
#if !MIN_VERSION_base(4,16,0)
50+
-- harmless to import, except for warnings that it is unused.
51+
import Data.Text.Internal.PrimCompat (word8ToWord#)
5552
#endif
5653

5754
default(Int)
@@ -102,18 +99,18 @@ ord4 c =
10299
chr2 :: Word8 -> Word8 -> Char
103100
chr2 (W8# x1#) (W8# x2#) = C# (chr# (z1# +# z2#))
104101
where
105-
!y1# = word2Int# (extendWord8# x1#)
106-
!y2# = word2Int# (extendWord8# x2#)
102+
!y1# = word2Int# (word8ToWord# x1#)
103+
!y2# = word2Int# (word8ToWord# x2#)
107104
!z1# = uncheckedIShiftL# (y1# -# 0xC0#) 6#
108105
!z2# = y2# -# 0x80#
109106
{-# INLINE chr2 #-}
110107

111108
chr3 :: Word8 -> Word8 -> Word8 -> Char
112109
chr3 (W8# x1#) (W8# x2#) (W8# x3#) = C# (chr# (z1# +# z2# +# z3#))
113110
where
114-
!y1# = word2Int# (extendWord8# x1#)
115-
!y2# = word2Int# (extendWord8# x2#)
116-
!y3# = word2Int# (extendWord8# x3#)
111+
!y1# = word2Int# (word8ToWord# x1#)
112+
!y2# = word2Int# (word8ToWord# x2#)
113+
!y3# = word2Int# (word8ToWord# x3#)
117114
!z1# = uncheckedIShiftL# (y1# -# 0xE0#) 12#
118115
!z2# = uncheckedIShiftL# (y2# -# 0x80#) 6#
119116
!z3# = y3# -# 0x80#
@@ -123,10 +120,10 @@ chr4 :: Word8 -> Word8 -> Word8 -> Word8 -> Char
123120
chr4 (W8# x1#) (W8# x2#) (W8# x3#) (W8# x4#) =
124121
C# (chr# (z1# +# z2# +# z3# +# z4#))
125122
where
126-
!y1# = word2Int# (extendWord8# x1#)
127-
!y2# = word2Int# (extendWord8# x2#)
128-
!y3# = word2Int# (extendWord8# x3#)
129-
!y4# = word2Int# (extendWord8# x4#)
123+
!y1# = word2Int# (word8ToWord# x1#)
124+
!y2# = word2Int# (word8ToWord# x2#)
125+
!y3# = word2Int# (word8ToWord# x3#)
126+
!y4# = word2Int# (word8ToWord# x4#)
130127
!z1# = uncheckedIShiftL# (y1# -# 0xF0#) 18#
131128
!z2# = uncheckedIShiftL# (y2# -# 0x80#) 12#
132129
!z3# = uncheckedIShiftL# (y3# -# 0x80#) 6#

Data/Text/Internal/PrimCompat.hs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{-# LANGUAGE CPP #-}
2+
{-# LANGUAGE MagicHash #-}
3+
4+
module Data.Text.Internal.PrimCompat
5+
( word8ToWord#
6+
, wordToWord8#
7+
8+
, word16ToWord#
9+
, wordToWord16#
10+
11+
, wordToWord32#
12+
, word32ToWord#
13+
) where
14+
15+
#if MIN_VERSION_base(4,16,0)
16+
17+
import GHC.Base
18+
19+
#else
20+
21+
import GHC.Prim (Word#)
22+
23+
wordToWord8#, word8ToWord# :: Word# -> Word#
24+
wordToWord16#, word16ToWord# :: Word# -> Word#
25+
wordToWord32#, word32ToWord# :: Word# -> Word#
26+
word8ToWord# w = w
27+
word16ToWord# w = w
28+
word32ToWord# w = w
29+
wordToWord8# w = w
30+
wordToWord16# w = w
31+
wordToWord32# w = w
32+
{-# INLINE wordToWord16# #-}
33+
{-# INLINE word16ToWord# #-}
34+
{-# INLINE wordToWord32# #-}
35+
{-# INLINE word32ToWord# #-}
36+
37+
#endif

Data/Text/Internal/Unsafe/Char.hs

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,34 +35,22 @@ import Data.Text.Internal.Unsafe.Shift (shiftR)
3535
import GHC.Exts (Char(..), Int(..), chr#, ord#, word2Int#)
3636
import GHC.Word (Word8(..), Word16(..), Word32(..))
3737
import qualified Data.Text.Array as A
38-
39-
#if MIN_VERSION_base(4,16,0)
40-
import GHC.Exts ( extendWord8#, extendWord16#, extendWord32# )
41-
#else
42-
import GHC.Prim (Word#)
43-
extendWord8#, extendWord16#, extendWord32# :: Word# -> Word#
44-
extendWord8# w = w
45-
extendWord16# w = w
46-
extendWord32# w = w
47-
{-# INLINE extendWord8# #-}
48-
{-# INLINE extendWord16# #-}
49-
{-# INLINE extendWord32# #-}
50-
#endif
38+
import Data.Text.Internal.PrimCompat ( word8ToWord#, word16ToWord#, word32ToWord# )
5139

5240
ord :: Char -> Int
5341
ord (C# c#) = I# (ord# c#)
5442
{-# INLINE ord #-}
5543

5644
unsafeChr :: Word16 -> Char
57-
unsafeChr (W16# w#) = C# (chr# (word2Int# (extendWord16# w#)))
45+
unsafeChr (W16# w#) = C# (chr# (word2Int# (word16ToWord# w#)))
5846
{-# INLINE unsafeChr #-}
5947

6048
unsafeChr8 :: Word8 -> Char
61-
unsafeChr8 (W8# w#) = C# (chr# (word2Int# (extendWord8# w#)))
49+
unsafeChr8 (W8# w#) = C# (chr# (word2Int# (word8ToWord# w#)))
6250
{-# INLINE unsafeChr8 #-}
6351

6452
unsafeChr32 :: Word32 -> Char
65-
unsafeChr32 (W32# w#) = C# (chr# (word2Int# (extendWord32# w#)))
53+
unsafeChr32 (W32# w#) = C# (chr# (word2Int# (word32ToWord# w#)))
6654
{-# INLINE unsafeChr32 #-}
6755

6856
-- | Write a character into the array at the given offset. Returns

Data/Text/Internal/Unsafe/Shift.hs

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
{-# LANGUAGE MagicHash, CPP #-}
1+
{-# LANGUAGE CPP #-}
2+
{-# LANGUAGE MagicHash #-}
23

34
-- |
45
-- Module : Data.Text.Internal.Unsafe.Shift
@@ -21,23 +22,11 @@ module Data.Text.Internal.Unsafe.Shift
2122
) where
2223

2324
-- import qualified Data.Bits as Bits
24-
import GHC.Word
25-
26-
#if MIN_VERSION_base(4,16,0)
2725
import GHC.Base
28-
#else
29-
import GHC.Base hiding (extendWord16#, narrowWord16#)
30-
import GHC.Prim (Word#)
31-
extendWord16#, extendWord32# :: Word# -> Word#
32-
narrowWord16#, narrowWord32# :: Word# -> Word#
33-
extendWord16# w = w
34-
extendWord32# w = w
35-
narrowWord16# w = w
36-
narrowWord32# w = w
37-
{-# INLINE narrowWord16# #-}
38-
{-# INLINE extendWord16# #-}
39-
{-# INLINE narrowWord32# #-}
40-
{-# INLINE extendWord32# #-}
26+
import GHC.Word
27+
#if !MIN_VERSION_base(4,16,0)
28+
-- harmless to import, except for warnings that it is unused.
29+
import Data.Text.Internal.PrimCompat
4130
#endif
4231

4332
-- | This is a workaround for poor optimisation in GHC 6.8.2. It
@@ -52,17 +41,17 @@ class UnsafeShift a where
5241

5342
instance UnsafeShift Word16 where
5443
{-# INLINE shiftL #-}
55-
shiftL (W16# x#) (I# i#) = W16# (narrowWord16# ((extendWord16# x#) `uncheckedShiftL#` i#))
44+
shiftL (W16# x#) (I# i#) = W16# (wordToWord16# ((word16ToWord# x#) `uncheckedShiftL#` i#))
5645

5746
{-# INLINE shiftR #-}
58-
shiftR (W16# x#) (I# i#) = W16# (narrowWord16# ((extendWord16# x#) `uncheckedShiftRL#` i#))
47+
shiftR (W16# x#) (I# i#) = W16# (wordToWord16# ((word16ToWord# x#) `uncheckedShiftRL#` i#))
5948

6049
instance UnsafeShift Word32 where
6150
{-# INLINE shiftL #-}
62-
shiftL (W32# x#) (I# i#) = W32# (narrowWord32# ((extendWord32# x#) `uncheckedShiftL#` i#))
51+
shiftL (W32# x#) (I# i#) = W32# (wordToWord32# ((word32ToWord# x#) `uncheckedShiftL#` i#))
6352

6453
{-# INLINE shiftR #-}
65-
shiftR (W32# x#) (I# i#) = W32# (narrowWord32# ((extendWord32# x#) `uncheckedShiftRL#` i#))
54+
shiftR (W32# x#) (I# i#) = W32# (wordToWord32# ((word32ToWord# x#) `uncheckedShiftRL#` i#))
6655

6756
instance UnsafeShift Word64 where
6857
{-# INLINE shiftL #-}

text.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ library
119119
Data.Text.Internal.Builder.Functions
120120
Data.Text.Internal.Builder.Int.Digits
121121
Data.Text.Internal.Builder.RealFloat.Functions
122+
Data.Text.Internal.PrimCompat
122123
Data.Text.Internal.Encoding.Fusion
123124
Data.Text.Internal.Encoding.Fusion.Common
124125
Data.Text.Internal.Encoding.Utf16

0 commit comments

Comments
 (0)