From: malcolm Date: Fri, 18 Oct 2002 16:29:18 +0000 (+0000) Subject: [project @ 2002-10-18 16:29:18 by malcolm] X-Git-Tag: nhc98-1-18-release~810 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=26a398441d6001960acfa0b42a4a19b015952919;p=ghc-base.git [project @ 2002-10-18 16:29:18 by malcolm] Implement atomicModifyIORef for nhc98. --- diff --git a/Data/IORef.hs b/Data/IORef.hs index af8ebda..9170faf 100644 --- a/Data/IORef.hs +++ b/Data/IORef.hs @@ -48,6 +48,7 @@ import NHC.IOExtras , newIORef , readIORef , writeIORef + , excludeFinalisers ) #endif @@ -86,4 +87,11 @@ atomicModifyIORef = plainModifyIORef -- Hugs has no preemption where plainModifyIORef r f = do a <- readIORef r case f a of (a',b) -> writeIORef r a' >> return b +#elif defined(__NHC__) +atomicModifyIORef r f = + excludeFinalisers $ do + a <- readIORef r + let (a',b) = f a + writeIORef r a' + return b #endif