X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Futils%2FBinary.hs;h=378595796691acb7770fe00aa31073b7ed4bef52;hp=11f3b12317d9a651e2216ae57ad57550b312a069;hb=18691d440f90a3dff4ef538091c886af505e5cf5;hpb=9d0c8f842e35dde3d570580cf62a32779f66a6de diff --git a/compiler/utils/Binary.hs b/compiler/utils/Binary.hs index 11f3b12..3785957 100644 --- a/compiler/utils/Binary.hs +++ b/compiler/utils/Binary.hs @@ -59,7 +59,7 @@ module Binary #include "HsVersions.h" -- The *host* architecture version: -#include "MachDeps.h" +#include "../includes/MachDeps.h" import {-# SOURCE #-} Name (Name) import FastString @@ -71,9 +71,6 @@ import BasicTypes import Foreign import Data.Array -import Data.Bits -import Data.Int -import Data.Word import Data.IORef import Data.Char ( ord, chr ) import Data.Typeable @@ -84,13 +81,7 @@ import System.IO.Error ( mkIOError, eofErrorType ) import GHC.Real ( Ratio(..) ) import GHC.Exts import GHC.Word ( Word8(..) ) -import System.IO ( openBinaryFile ) - -#if __GLASGOW_HASKELL__ >= 611 import GHC.IO ( IO(..) ) -#else -import GHC.IOBase ( IO(..) ) -#endif type BinArray = ForeignPtr Word8 @@ -392,33 +383,20 @@ instance Binary Int64 where instance Binary () where put_ _ () = return () get _ = return () --- getF bh p = case getBitsF bh 0 p of (_,b) -> ((),b) instance Binary Bool where put_ bh b = putByte bh (fromIntegral (fromEnum b)) get bh = do x <- getWord8 bh; return $! (toEnum (fromIntegral x)) --- getF bh p = case getBitsF bh 1 p of (x,b) -> (toEnum x,b) instance Binary Char where put_ bh c = put_ bh (fromIntegral (ord c) :: Word32) get bh = do x <- get bh; return $! (chr (fromIntegral (x :: Word32))) --- getF bh p = case getBitsF bh 8 p of (x,b) -> (toEnum x,b) instance Binary Int where -#if SIZEOF_HSINT == 4 - put_ bh i = put_ bh (fromIntegral i :: Int32) - get bh = do - x <- get bh - return $! (fromIntegral (x :: Int32)) -#elif SIZEOF_HSINT == 8 put_ bh i = put_ bh (fromIntegral i :: Int64) get bh = do x <- get bh return $! (fromIntegral (x :: Int64)) -#else -#error "unsupported sizeof(HsInt)" -#endif --- getF bh = getBitsF bh 32 instance Binary a => Binary [a] where put_ bh l = do @@ -568,8 +546,8 @@ instance (Integral a, Binary a) => Binary (Ratio a) where #endif instance Binary (Bin a) where - put_ bh (BinPtr i) = put_ bh i - get bh = do i <- get bh; return (BinPtr i) + put_ bh (BinPtr i) = put_ bh (fromIntegral i :: Int32) + get bh = do i <- get bh; return (BinPtr (fromIntegral (i :: Int32))) -- ----------------------------------------------------------------------------- -- Instances for Data.Typeable stuff @@ -724,7 +702,7 @@ instance Binary FastString where get bh = do j <- get bh - return $! (ud_dict (getUserData bh) ! j) + return $! (ud_dict (getUserData bh) ! (fromIntegral (j :: Word32))) -- Here to avoid loop