% -----------------------------------------------------------------------------
-% $Id: PrelStable.lhs,v 1.8 2000/11/07 10:42:57 simonmar Exp $
+% $Id: PrelStable.lhs,v 1.9 2001/03/25 09:57:26 qrczak Exp $
%
% (c) The GHC Team, 1992-2000
%
-----------------------------------------------------------------------------
-- Stable Pointers
-data StablePtr a = StablePtr (StablePtr# a)
+data StablePtr a = StablePtr (StablePtr# a)
instance CCallable (StablePtr a)
instance CReturnable (StablePtr a)
newStablePtr :: a -> IO (StablePtr a)
-deRefStablePtr :: StablePtr a -> IO a
-foreign import unsafe freeStablePtr :: StablePtr a -> IO ()
-
newStablePtr a = IO $ \ s ->
case makeStablePtr# a s of (# s', sp #) -> (# s', StablePtr sp #)
+deRefStablePtr :: StablePtr a -> IO a
deRefStablePtr (StablePtr sp) = IO $ \s -> deRefStablePtr# sp s
+foreign import unsafe freeStablePtr :: StablePtr a -> IO ()
instance Eq (StablePtr a) where
(StablePtr sp1) == (StablePtr sp2) =