import PrelIOBase ( IO(..), IOResult(..) )
#ifndef __PARALLEL_HASKELL__
-import PrelForeign ( ForeignObj(..) )
+import PrelForeign ( ForeignObj(..), StablePtr(..) )
#endif
\end{code}
readIntOffAddr :: Addr -> Int -> IO Int
readIntOffAddr a i = _casm_ `` %r=(StgInt)(((StgInt*)%0)[(StgInt)%1]); '' a i
+readStablePtrOffAddr :: Addr -> Int -> IO (StablePtr a)
+readStablePtrOffAddr a i = _casm_ `` %r=(StgStablePtr)(((StgStablePtr*)%0)[(StgInt)%1]); '' a i
+
readWordOffAddr :: Addr -> Int -> IO Word
readWordOffAddr a i = _casm_ `` %r=(StgWord)(((StgWord*)%0)[(StgInt)%1]); '' a i
writeIntOffAddr (A# a#) (I# i#) (I# e#) = IO $ \ s# ->
case (writeIntOffAddr# a# i# e# s#) of s2# -> IOok s2# ()
+writeStablePtrOffAddr :: Addr -> Int -> StablePtr a -> IO ()
+writeStablePtrOffAddr (A# a#) (I# i#) (StablePtr e#) = IO $ \ s# ->
+ case (writeStablePtrOffAddr# a# i# e# s#) of s2# -> IOok s2# ()
+
writeWordOffAddr :: Addr -> Int -> Word -> IO ()
writeWordOffAddr (A# a#) (I# i#) (W# e#) = IO $ \ s# ->
case (writeWordOffAddr# a# i# e# s#) of s2# -> IOok s2# ()