From 07ee96faac4996cde0ab82789eec0b70d1a35af0 Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Tue, 27 Jan 2015 16:20:54 -0800 Subject: Use strict atomicModifyIORef' (added in GHC 7.6). Summary: Signed-off-by: Edward Z. Yang Test Plan: validate Reviewers: austin, hvr Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D635 --- compiler/utils/IOEnv.hs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'compiler/utils/IOEnv.hs') diff --git a/compiler/utils/IOEnv.hs b/compiler/utils/IOEnv.hs index 46f6e467c1..fd98bad213 100644 --- a/compiler/utils/IOEnv.hs +++ b/compiler/utils/IOEnv.hs @@ -38,7 +38,7 @@ import Module import Panic import Data.IORef ( IORef, newIORef, readIORef, writeIORef, modifyIORef, - atomicModifyIORef ) + atomicModifyIORef, atomicModifyIORef' ) import Data.Typeable import System.IO.Unsafe ( unsafeInterleaveIO ) import System.IO ( fixIO ) @@ -194,10 +194,7 @@ atomicUpdMutVar var upd = liftIO (atomicModifyIORef var upd) -- | Strict variant of 'atomicUpdMutVar'. atomicUpdMutVar' :: IORef a -> (a -> (a, b)) -> IOEnv env b -atomicUpdMutVar' var upd = do - r <- atomicUpdMutVar var upd - _ <- liftIO . evaluate =<< readMutVar var - return r +atomicUpdMutVar' var upd = liftIO (atomicModifyIORef' var upd) ---------------------------------------------------------------------- -- Accessing the environment -- cgit v1.2.1