From 26a398441d6001960acfa0b42a4a19b015952919 Mon Sep 17 00:00:00 2001 From: malcolm Date: Fri, 18 Oct 2002 16:29:18 +0000 Subject: [PATCH] [project @ 2002-10-18 16:29:18 by malcolm] Implement atomicModifyIORef for nhc98. --- Data/IORef.hs | 8 ++++++++ 1 file changed, 8 insertions(+) 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 -- 1.7.10.4