X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=GHC%2FConc.lhs;h=edb9679f99874c5a6b17411e14b8c4388344868d;hb=0d6c1599c246100deb2fa54315811ed94d1a300c;hp=02b256a816e1cd87134dbca67c4bb1518040da66;hpb=b72cb4f4e104ab0c64feb46ca4d3d8187c90dd28;p=haskell-directory.git diff --git a/GHC/Conc.lhs b/GHC/Conc.lhs index 02b256a..edb9679 100644 --- a/GHC/Conc.lhs +++ b/GHC/Conc.lhs @@ -81,6 +81,8 @@ import GHC.Exception ( Exception(..), AsyncException(..) ) import GHC.Pack ( packCString# ) import GHC.Ptr ( Ptr(..), plusPtr, FunPtr(..) ) import GHC.STRef +import Data.Typeable +#include "Typeable.h" infixr 0 `par`, `pseq` \end{code} @@ -114,6 +116,9 @@ This misfeature will hopefully be corrected at a later date. it defines 'ThreadId' as a synonym for (). -} +INSTANCE_TYPEABLE0(ThreadId,threadIdTc,"ThreadId") + + --forkIO has now been hoisted out into the Concurrent library. {- | 'killThread' terminates the given thread (GHC only). @@ -204,6 +209,8 @@ transactions. \begin{code} newtype STM a = STM (State# RealWorld -> (# State# RealWorld, a #)) +INSTANCE_TYPEABLE1(STM,stmTc,"STM" ) + unSTM :: STM a -> (State# RealWorld -> (# State# RealWorld, a #)) unSTM (STM a) = a @@ -262,6 +269,8 @@ catchSTM (STM m) k = STM $ \s -> catchSTM# m (\ex -> unSTM (k ex)) s data TVar a = TVar (TVar# RealWorld a) +INSTANCE_TYPEABLE1(TVar,tvarTc,"TVar" ) + instance Eq (TVar a) where (TVar tvar1#) == (TVar tvar2#) = sameTVar# tvar1# tvar2# @@ -300,6 +309,8 @@ writes. \begin{code} --Defined in IOBase to avoid cycle: data MVar a = MVar (SynchVar# RealWorld a) +INSTANCE_TYPEABLE1(MVar,mvarTc,"MVar" ) + -- |Create an 'MVar' which is initially empty. newEmptyMVar :: IO (MVar a) newEmptyMVar = IO $ \ s# ->