projects
/
ghc-base.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use explicit language extensions & remove extension fields from base.cabal
[ghc-base.git]
/
Control
/
Concurrent
/
MVar.hs
diff --git
a/Control/Concurrent/MVar.hs
b/Control/Concurrent/MVar.hs
index
3513bbd
..
9a95b8f
100644
(file)
--- a/
Control/Concurrent/MVar.hs
+++ b/
Control/Concurrent/MVar.hs
@@
-1,3
+1,5
@@
+{-# LANGUAGE CPP, NoImplicitPrelude #-}
+
-----------------------------------------------------------------------------
-- |
-- Module : Control.Concurrent.MVar
-----------------------------------------------------------------------------
-- |
-- Module : Control.Concurrent.MVar
@@
-40,12
+42,17
@@
import Hugs.ConcBase ( MVar, newEmptyMVar, newMVar, takeMVar, putMVar,
#endif
#ifdef __GLASGOW_HASKELL__
#endif
#ifdef __GLASGOW_HASKELL__
-import GHC.Conc ( MVar, newEmptyMVar, newMVar, takeMVar, putMVar,
+import GHC.MVar ( MVar, newEmptyMVar, newMVar, takeMVar, putMVar,
tryTakeMVar, tryPutMVar, isEmptyMVar, addMVarFinalizer
)
#endif
tryTakeMVar, tryPutMVar, isEmptyMVar, addMVarFinalizer
)
#endif
+#ifdef __GLASGOW_HASKELL__
+import GHC.Base
+#else
import Prelude
import Prelude
+#endif
+
import Control.Exception.Base
{-|
import Control.Exception.Base
{-|
@@
-54,7
+61,7
@@
import Control.Exception.Base
-}
readMVar :: MVar a -> IO a
readMVar m =
-}
readMVar :: MVar a -> IO a
readMVar m =
- block $ do
+ mask_ $ do
a <- takeMVar m
putMVar m a
return a
a <- takeMVar m
putMVar m a
return a
@@
-67,7
+74,7
@@
readMVar m =
-}
swapMVar :: MVar a -> a -> IO a
swapMVar mvar new =
-}
swapMVar :: MVar a -> a -> IO a
swapMVar mvar new =
- block $ do
+ mask_ $ do
old <- takeMVar mvar
putMVar mvar new
return old
old <- takeMVar mvar
putMVar mvar new
return old
@@
-83,9
+90,9
@@
swapMVar mvar new =
-- http://www.haskell.org//pipermail/haskell/2006-May/017907.html
withMVar :: MVar a -> (a -> IO b) -> IO b
withMVar m io =
-- http://www.haskell.org//pipermail/haskell/2006-May/017907.html
withMVar :: MVar a -> (a -> IO b) -> IO b
withMVar m io =
- block $ do
+ mask $ \restore -> do
a <- takeMVar m
a <- takeMVar m
- b <- unblock (io a) `onException` putMVar m a
+ b <- restore (io a) `onException` putMVar m a
putMVar m a
return b
putMVar m a
return b
@@
-97,9
+104,9
@@
withMVar m io =
{-# INLINE modifyMVar_ #-}
modifyMVar_ :: MVar a -> (a -> IO a) -> IO ()
modifyMVar_ m io =
{-# INLINE modifyMVar_ #-}
modifyMVar_ :: MVar a -> (a -> IO a) -> IO ()
modifyMVar_ m io =
- block $ do
+ mask $ \restore -> do
a <- takeMVar m
a <- takeMVar m
- a' <- unblock (io a) `onException` putMVar m a
+ a' <- restore (io a) `onException` putMVar m a
putMVar m a'
{-|
putMVar m a'
{-|
@@
-109,8
+116,8
@@
modifyMVar_ m io =
{-# INLINE modifyMVar #-}
modifyMVar :: MVar a -> (a -> IO (a,b)) -> IO b
modifyMVar m io =
{-# INLINE modifyMVar #-}
modifyMVar :: MVar a -> (a -> IO (a,b)) -> IO b
modifyMVar m io =
- block $ do
+ mask $ \restore -> do
a <- takeMVar m
a <- takeMVar m
- (a',b) <- unblock (io a) `onException` putMVar m a
+ (a',b) <- restore (io a) `onException` putMVar m a
putMVar m a'
return b
putMVar m a'
return b