Commit 44d7b259 authored by panne's avatar panne
Browse files

[project @ 2001-12-11 19:01:17 by panne]

More shifting #ifdef-ery... :-P
parent 14badcc7
...@@ -120,7 +120,11 @@ i2w_s x = (x::Int#) ...@@ -120,7 +120,11 @@ i2w_s x = (x::Int#)
mkUnique (C# c) (I# i) mkUnique (C# c) (I# i)
= MkUnique (w2i (tag `or#` bits)) = MkUnique (w2i (tag `or#` bits))
where where
#if __GLASGOW_HASKELL__ >= 503
tag = i2w (ord# c) `uncheckedShiftL#` i2w_s 24#
#else
tag = i2w (ord# c) `shiftL#` i2w_s 24# tag = i2w (ord# c) `shiftL#` i2w_s 24#
#endif
bits = i2w i `and#` (i2w 16777215#){-``0x00ffffff''-} bits = i2w i `and#` (i2w 16777215#){-``0x00ffffff''-}
unpkUnique (MkUnique u) unpkUnique (MkUnique u)
...@@ -130,7 +134,11 @@ unpkUnique (MkUnique u) ...@@ -130,7 +134,11 @@ unpkUnique (MkUnique u)
in in
(tag, i) (tag, i)
where where
#if __GLASGOW_HASKELL__ >= 503
shiftr x y = uncheckedShiftRL# x y
#else
shiftr x y = shiftRL# x y shiftr x y = shiftRL# x y
#endif
\end{code} \end{code}
......
...@@ -800,10 +800,18 @@ shiftR_ :: FastInt -> FastInt -> FastInt ...@@ -800,10 +800,18 @@ shiftR_ :: FastInt -> FastInt -> FastInt
#if __GLASGOW_HASKELL__ #if __GLASGOW_HASKELL__
{-# INLINE shiftL_ #-} {-# INLINE shiftL_ #-}
{-# INLINE shiftR_ #-} {-# INLINE shiftR_ #-}
#if __GLASGOW_HASKELL__ >= 503
shiftL_ n p = word2Int#((int2Word# n) `uncheckedShiftL#` p)
#else
shiftL_ n p = word2Int#((int2Word# n) `shiftL#` p) shiftL_ n p = word2Int#((int2Word# n) `shiftL#` p)
#endif
shiftR_ n p = word2Int#((int2Word# n) `shiftr` p) shiftR_ n p = word2Int#((int2Word# n) `shiftr` p)
where where
#if __GLASGOW_HASKELL__ >= 503
shiftr x y = uncheckedShiftRL# x y
#else
shiftr x y = shiftRL# x y shiftr x y = shiftRL# x y
#endif
#else {- not GHC -} #else {- not GHC -}
shiftL_ n p = n * (2 ^ p) shiftL_ n p = n * (2 ^ p)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment