[commit: ghc] master: Use finiteBitSize rather than bitSize when it is available (ca64cee)

Ian Lynagh <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.ghc
Message-ID <[email protected]>
Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/ca64cee6f870d2c51c558d8e7203345dfd5c7954

>---------------------------------------------------------------

commit ca64cee6f870d2c51c558d8e7203345dfd5c7954
Author: Ian Lynagh <[email protected]>
Date:   Sun Sep 23 21:45:11 2012 +0100

    Use finiteBitSize rather than bitSize when it is available

>---------------------------------------------------------------

 compiler/utils/Serialized.hs |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/compiler/utils/Serialized.hs b/compiler/utils/Serialized.hs
index 26cca6c..902d2fe 100644
--- a/compiler/utils/Serialized.hs
+++ b/compiler/utils/Serialized.hs
@@ -95,16 +95,26 @@ deserializeConstr bytes k = deserializeWord8 bytes $ \constr_ix bytes ->
                                 x -> error $ "deserializeConstr: unrecognised serialized constructor type " ++ show x ++ " in context " ++ show bytes
 
 
+#if __GLASGOW_HASKELL__ < 707
 serializeFixedWidthNum :: forall a. (Num a, Integral a, Bits a) => a -> [Word8] -> [Word8]
 serializeFixedWidthNum what = go (bitSize what) what
+#else
+serializeFixedWidthNum :: forall a. (Num a, Integral a, FiniteBits a) => a -> [Word8] -> [Word8]
+serializeFixedWidthNum what = go (finiteBitSize what) what
+#endif
   where
     go :: Int -> a -> [Word8] -> [Word8]
     go size current rest
       | size <= 0 = rest
       | otherwise = fromIntegral (current .&. 255) : go (size - 8) (current `shiftR` 8) rest
 
+#if __GLASGOW_HASKELL__ < 707
 deserializeFixedWidthNum :: forall a b. (Num a, Integral a, Bits a) => [Word8] -> (a -> [Word8] -> b) -> b
 deserializeFixedWidthNum bytes k = go (bitSize (undefined :: a)) bytes k
+#else
+deserializeFixedWidthNum :: forall a b. (Num a, Integral a, FiniteBits a) => [Word8] -> (a -> [Word8] -> b) -> b
+deserializeFixedWidthNum bytes k = go (finiteBitSize (undefined :: a)) bytes k
+#endif
   where
     go :: Int -> [Word8] -> (a -> [Word8] -> b) -> b
     go size bytes k
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.