projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make MkIface warning-free
[ghc-hetmet.git]
/
compiler
/
utils
/
BufWrite.hs
diff --git
a/compiler/utils/BufWrite.hs
b/compiler/utils/BufWrite.hs
index
18f2864
..
3064135
100644
(file)
--- a/
compiler/utils/BufWrite.hs
+++ b/
compiler/utils/BufWrite.hs
@@
-23,6
+23,7
@@
module BufWrite (
#include "HsVersions.h"
import FastString
#include "HsVersions.h"
import FastString
+import FastTypes
import FastMutInt
import Control.Monad ( when )
import FastMutInt
import Control.Monad ( when )
@@
-30,11
+31,6
@@
import Data.Char ( ord )
import Foreign
import System.IO
import Foreign
import System.IO
-import GHC.IOBase ( IO(..) )
-import GHC.Ptr ( Ptr(..) )
-
-import GHC.Exts ( Int(..), Int#, Addr# )
-
-- -----------------------------------------------------------------------------
data BufHandle = BufHandle {-#UNPACK#-}!(Ptr Word8)
-- -----------------------------------------------------------------------------
data BufHandle = BufHandle {-#UNPACK#-}!(Ptr Word8)
@@
-48,7
+44,8
@@
newBufHandle hdl = do
writeFastMutInt r 0
return (BufHandle ptr r hdl)
writeFastMutInt r 0
return (BufHandle ptr r hdl)
-buf_size = 8192 :: Int
+buf_size :: Int
+buf_size = 8192
#define STRICT2(f) f a b | a `seq` b `seq` False = undefined
#define STRICT3(f) f a b c | a `seq` b `seq` c `seq` False = undefined
#define STRICT2(f) f a b | a `seq` b `seq` False = undefined
#define STRICT3(f) f a b c | a `seq` b `seq` c `seq` False = undefined
@@
-66,7
+63,7
@@
bPutChar b@(BufHandle buf r hdl) c = do
bPutStr :: BufHandle -> String -> IO ()
STRICT2(bPutStr)
bPutStr :: BufHandle -> String -> IO ()
STRICT2(bPutStr)
-bPutStr b@(BufHandle buf r hdl) str = do
+bPutStr (BufHandle buf r hdl) str = do
i <- readFastMutInt r
loop str i
where loop _ i | i `seq` False = undefined
i <- readFastMutInt r
loop str i
where loop _ i | i `seq` False = undefined
@@
-93,22
+90,22
@@
bPutFS b@(BufHandle buf r hdl) fs@(FastString _ len _ fp _) =
copyBytes (buf `plusPtr` i) ptr len
writeFastMutInt r (i+len)
copyBytes (buf `plusPtr` i) ptr len
writeFastMutInt r (i+len)
-bPutLitString :: BufHandle -> Addr# -> Int# -> IO ()
-bPutLitString b@(BufHandle buf r hdl) a# len# = do
- let len = I# len#
+bPutLitString :: BufHandle -> LitString -> FastInt -> IO ()
+bPutLitString b@(BufHandle buf r hdl) a len_ = a `seq` do
+ let len = iBox len_
i <- readFastMutInt r
if (i+len) >= buf_size
then do hPutBuf hdl buf i
writeFastMutInt r 0
if (len >= buf_size)
i <- readFastMutInt r
if (i+len) >= buf_size
then do hPutBuf hdl buf i
writeFastMutInt r 0
if (len >= buf_size)
- then hPutBuf hdl (Ptr a#) len
- else bPutLitString b a# len#
+ then hPutBuf hdl a len
+ else bPutLitString b a len_
else do
else do
- copyBytes (buf `plusPtr` i) (Ptr a#) len
+ copyBytes (buf `plusPtr` i) a len
writeFastMutInt r (i+len)
bFlush :: BufHandle -> IO ()
writeFastMutInt r (i+len)
bFlush :: BufHandle -> IO ()
-bFlush b@(BufHandle buf r hdl) = do
+bFlush (BufHandle buf r hdl) = do
i <- readFastMutInt r
when (i > 0) $ hPutBuf hdl buf i
free buf
i <- readFastMutInt r
when (i > 0) $ hPutBuf hdl buf i
free buf