Skip to content
Snippets Groups Projects
Commit b7ffad2a authored by Simon Marlow's avatar Simon Marlow
Browse files

[project @ 1999-07-27 11:12:05 by simonmar]

add unofficial/undocumented function:

    mkWeakIORef :: IORef a -> IO () -> IO (Weak (IORef a))

for weak pointers to IORefs.  This avoids some of the problems with
inlining disturbing the semantics of mkWeak by making the weak key
point to the primitive MutVar instead of the box.
parent 3c40d602
No related merge requests found
......@@ -23,6 +23,8 @@ module IOExts
, readIORef
, writeIORef
, mkWeakIORef
, IOArray -- instance of: Eq
, newIOArray
, boundsIOArray
......@@ -71,6 +73,7 @@ import PrelHandle ( openFileEx, IOModeEx(..),
)
import PrelST
import PrelArr
import PrelWeak
import PrelGHC
import PrelHandle
import PrelErr
......@@ -109,6 +112,10 @@ newIORef v = stToIO (newVar v) >>= \ var -> return (IORef var)
readIORef (IORef var) = stToIO (readVar var)
writeIORef (IORef var) v = stToIO (writeVar var v)
#endif
mkWeakIORef :: IORef a -> IO () -> IO (Weak (IORef a))
mkWeakIORef r@(IORef (MutableVar r#)) f = IO $ \s ->
case mkWeak# r# r f s of (# s1, w #) -> (# s1, Weak w #)
\end{code}
\begin{code}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment