on master help sign in
removing IORef adaptor module.

All supported versions of GHC now have atomicModifyIORef'.

commit1b2349362b6b4a1ffb232f8aac7799076442b9f9 authorKazu Yamamoto <kazu@iij.ad.jp> dateMon 24 Jul 2017, 11:42 (9 years ago) parent3eb03a4
12 files changed+18−46
warp/Network/Wai/Handler/Warp/FdCache.hs+2−2 warp/Network/Wai/Handler/Warp/HTTP2/Manager.hs+2−2 warp/Network/Wai/Handler/Warp/HTTP2/Receiver.hs+1−1 warp/Network/Wai/Handler/Warp/HTTP2/Request.hs+1−1 warp/Network/Wai/Handler/Warp/HTTP2/Sender.hs+1−1 warp/Network/Wai/Handler/Warp/HTTP2/Types.hs+2−2 warp/Network/Wai/Handler/Warp/HTTP2/Worker.hs+5−5 warp/Network/Wai/Handler/Warp/IORef.hs−26 warp/Network/Wai/Handler/Warp/Recv.hs+1−1 warp/Network/Wai/Handler/Warp/Run.hs+1−2 warp/Network/Wai/Handler/Warp/Timeout.hs+2−2 warp/warp.cabal−1
warp/Network/Wai/Handler/Warp/FdCache.hs+2−2
@@ -18,9 +18,9 @@ module Network.Wai.Handler.Warp.FdCache (
1818import Control.Applicative ((<$>), (<*>))
1919#endif
2020import Control.Exception (bracket)
21−import Network.Wai.Handler.Warp.IORef
22−import Network.Wai.Handler.Warp.MultiMap
2321import Control.Reaper
22+import Data.IORef
23+import Network.Wai.Handler.Warp.MultiMap
2424import System.Posix.IO (openFd, OpenFileFlags(..), defaultFileFlags, OpenMode(ReadOnly), closeFd, FdOption(CloseOnExec), setFdOption)
2525#endif
2626import System.Posix.Types (Fd)
warp/Network/Wai/Handler/Warp/HTTP2/Manager.hs+2−2
@@ -19,10 +19,10 @@ import Control.Applicative
1919import Control.Concurrent
2020import Control.Concurrent.STM
2121import Control.Monad (void)
22+import Data.Foldable
23+import Data.IORef
2224import Data.Set (Set)
2325import qualified Data.Set as Set
24−import Data.Foldable
25−import Network.Wai.Handler.Warp.IORef
2626import Network.Wai.Handler.Warp.Settings
2727import qualified Network.Wai.Handler.Warp.Timeout as T
2828
warp/Network/Wai/Handler/Warp/HTTP2/Receiver.hs+1−1
@@ -15,6 +15,7 @@ import qualified Control.Exception as E
1515import Control.Monad (when, unless, void)
1616import Data.ByteString (ByteString)
1717import qualified Data.ByteString as BS
18+import Data.IORef
1819import Network.HPACK
1920import Network.HPACK.Token
2021import Network.HTTP2
@@ -23,7 +24,6 @@ import Network.Wai.Handler.Warp.HTTP2.EncodeFrame
2324import Network.Wai.Handler.Warp.HTTP2.HPACK
2425import Network.Wai.Handler.Warp.HTTP2.Request
2526import Network.Wai.Handler.Warp.HTTP2.Types
26−import Network.Wai.Handler.Warp.IORef
2727import Network.Wai.Handler.Warp.ReadInt
2828import Network.Wai.Handler.Warp.Types
2929
warp/Network/Wai/Handler/Warp/HTTP2/Request.hs+1−1
@@ -13,6 +13,7 @@ import Control.Applicative ((<|>))
1313import Control.Arrow (first)
1414import Data.ByteString (ByteString)
1515import qualified Data.ByteString.Char8 as B8
16+import Data.IORef
1617import Data.Maybe (fromJust)
1718import qualified Data.Vault.Lazy as Vault
1819import Network.HPACK
@@ -22,7 +23,6 @@ import Network.Socket (SockAddr)
2223import Network.Wai
2324import Network.Wai.Handler.Warp.HTTP2.Types
2425import Network.Wai.Handler.Warp.HashMap (hashByteString)
25−import Network.Wai.Handler.Warp.IORef
2626import Network.Wai.Handler.Warp.Request (pauseTimeoutKey, getFileInfoKey)
2727import qualified Network.Wai.Handler.Warp.Settings as S (Settings, settingsNoParsePath)
2828import qualified Network.Wai.Handler.Warp.Timeout as Timeout
warp/Network/Wai/Handler/Warp/HTTP2/Sender.hs+1−1
@@ -14,6 +14,7 @@ import Data.Bits
1414import qualified Data.ByteString as BS
1515import Data.ByteString.Builder (Builder)
1616import qualified Data.ByteString.Builder.Extra as B
17+import Data.IORef
1718import Data.Maybe (isNothing)
1819import Data.Word (Word8, Word32)
1920import Foreign.Ptr (Ptr, plusPtr)
@@ -27,7 +28,6 @@ import Network.Wai.Handler.Warp.HTTP2.EncodeFrame
2728import Network.Wai.Handler.Warp.HTTP2.HPACK
2829import Network.Wai.Handler.Warp.HTTP2.Manager (Manager)
2930import Network.Wai.Handler.Warp.HTTP2.Types
30−import Network.Wai.Handler.Warp.IORef
3131import qualified Network.Wai.Handler.Warp.Settings as S
3232import Network.Wai.Handler.Warp.Types
3333
warp/Network/Wai/Handler/Warp/HTTP2/Types.hs+2−2
@@ -4,7 +4,6 @@
44
55module Network.Wai.Handler.Warp.HTTP2.Types where
66
7−import Data.ByteString.Builder (Builder)
87#if __GLASGOW_HASKELL__ < 709
98import Control.Applicative ((<$>),(<*>))
109#endif
@@ -14,12 +13,13 @@ import Control.Exception (SomeException, bracket)
1413import Control.Monad (void, forM_)
1514import Data.ByteString (ByteString)
1615import qualified Data.ByteString as BS
16+import Data.ByteString.Builder (Builder)
17+import Data.IORef
1718import Data.IntMap.Strict (IntMap, IntMap)
1819import qualified Data.IntMap.Strict as M
1920import qualified Network.HTTP.Types as H
2021import Network.Wai (Request, FilePart)
2122import Network.Wai.Handler.Warp.HTTP2.Manager
22−import Network.Wai.Handler.Warp.IORef
2323import Network.Wai.Handler.Warp.Types
2424
2525import Network.HTTP2
warp/Network/Wai/Handler/Warp/HTTP2/Worker.hs+5−5
@@ -16,25 +16,25 @@ import Control.Applicative
1616import Data.Monoid (mempty)
1717#endif
1818import Control.Applicative ((<|>))
19−import Data.Maybe (fromJust)
2019import Control.Concurrent.STM
2120import Control.Exception (SomeException(..), AsyncException(..))
2221import qualified Control.Exception as E
2322import Control.Monad (when)
2423import Data.ByteString.Builder (byteString)
24+import Data.IORef
25+import Data.Maybe (fromJust)
26+import Network.HPACK
27+import Network.HPACK.Token
2528import qualified Network.HTTP.Types as H
2629import Network.HTTP2
2730import Network.HTTP2.Priority
28−import Network.HPACK
29−import Network.HPACK.Token
3031import Network.Wai
3132import Network.Wai.Handler.Warp.FileInfoCache
3233import Network.Wai.Handler.Warp.HTTP2.EncodeFrame
3334import Network.Wai.Handler.Warp.HTTP2.File
3435import Network.Wai.Handler.Warp.HTTP2.Manager
35−import Network.Wai.Handler.Warp.HTTP2.Types
3636import Network.Wai.Handler.Warp.HTTP2.Request
37−import Network.Wai.Handler.Warp.IORef
37+import Network.Wai.Handler.Warp.HTTP2.Types
3838import qualified Network.Wai.Handler.Warp.Response as R
3939import qualified Network.Wai.Handler.Warp.Settings as S
4040import qualified Network.Wai.Handler.Warp.Timeout as T
warp/Network/Wai/Handler/Warp/IORef.hsdeleted−26
@@ -1,26 +0,0 @@
1−{-# LANGUAGE CPP #-}
2−
3−#ifndef MIN_VERSION_base
4−#define MIN_VERSION_base(x,y,z) 1
5−#endif
6−
7−module Network.Wai.Handler.Warp.IORef (
8− module Data.IORef
9−#if !MIN_VERSION_base(4,6,0)
10− , atomicModifyIORef'
11−#endif
12− ) where
13−
14−import Data.IORef
15−
16−#if !MIN_VERSION_base(4,6,0)
17−-- | Strict version of 'atomicModifyIORef'. This forces both the value stored
18−-- in the 'IORef' as well as the value returned.
19−atomicModifyIORef' :: IORef a -> (a -> (a,b)) -> IO b
20−atomicModifyIORef' ref f = do
21− c <- atomicModifyIORef ref
22− (\x -> let (a, b) = f x -- Lazy application of "f"
23− in (a, a `seq` b)) -- Lazy application of "seq"
24− -- The following forces "a `seq` b", so it also forces "f x".
25− c `seq` return c
26−#endif
warp/Network/Wai/Handler/Warp/Recv.hs+1−1
@@ -15,6 +15,7 @@ import Control.Applicative ((<$>))
1515import qualified Control.Exception as E
1616import qualified Data.ByteString as BS
1717import Data.ByteString.Internal (ByteString(..))
18+import Data.IORef
1819import Data.Word (Word8)
1920import Foreign.C.Error (eAGAIN, getErrno, throwErrno)
2021import Foreign.C.Types
@@ -23,7 +24,6 @@ import Foreign.Ptr (Ptr, castPtr, plusPtr)
2324import GHC.Conc (threadWaitRead)
2425import Network.Socket (Socket, fdSocket)
2526import Network.Wai.Handler.Warp.Buffer
26−import Network.Wai.Handler.Warp.IORef
2727import Network.Wai.Handler.Warp.Types
2828import System.Posix.Types (Fd(..))
2929
warp/Network/Wai/Handler/Warp/Run.hs+1−2
@@ -20,7 +20,7 @@ import Data.ByteString (ByteString)
2020import qualified Data.ByteString as S
2121import Data.Char (chr)
2222import "iproute" Data.IP (toHostAddress, toHostAddress6)
23−import Data.IORef (IORef, newIORef, readIORef, writeIORef)
23+import Data.IORef (IORef, newIORef, readIORef, writeIORef, atomicModifyIORef')
2424import Data.Streaming.Network (bindPortTCP)
2525import Foreign.C.Error (Errno(..), eCONNABORTED)
2626import GHC.IO.Exception (IOException(..))
@@ -35,7 +35,6 @@ import qualified Network.Wai.Handler.Warp.FdCache as F
3535import qualified Network.Wai.Handler.Warp.FileInfoCache as I
3636import Network.Wai.Handler.Warp.HTTP2 (http2, isHTTP2)
3737import Network.Wai.Handler.Warp.Header
38−import Network.Wai.Handler.Warp.IORef
3938import Network.Wai.Handler.Warp.ReadInt
4039import Network.Wai.Handler.Warp.Recv
4140import Network.Wai.Handler.Warp.Request
warp/Network/Wai/Handler/Warp/Timeout.hs+2−2
@@ -27,8 +27,8 @@ import Control.Concurrent (myThreadId)
2727import qualified Control.Exception as E
2828import Control.Reaper
2929import Data.Typeable (Typeable)
30−import Network.Wai.Handler.Warp.IORef (IORef)
31−import qualified Network.Wai.Handler.Warp.IORef as I
30+import Data.IORef (IORef)
31+import qualified Data.IORef as I
3232
3333----------------------------------------------------------------
3434
warp/warp.cabal−1
@@ -83,7 +83,6 @@ Library
8383 Network.Wai.Handler.Warp.HTTP2.Worker
8484 Network.Wai.Handler.Warp.Header
8585 Network.Wai.Handler.Warp.IO
86− Network.Wai.Handler.Warp.IORef
8786 Network.Wai.Handler.Warp.PackInt
8887 Network.Wai.Handler.Warp.ReadInt
8988 Network.Wai.Handler.Warp.Recv