-----------------------------------------------------------------------
--- $Id: primops.txt.pp,v 1.26 2003/03/24 14:46:53 simonmar Exp $
+-- $Id: primops.txt.pp,v 1.30 2003/10/01 10:57:39 wolfgang Exp $
--
-- Primitive Operations
--
usage = { mangle RaiseOp [mkM] mkM }
out_of_line = True
+-- raiseIO# needs to be a primop, because exceptions in the IO monad
+-- must be *precise* - we don't want the strictness analyser turning
+-- one kind of bottom into another, as it is allowed to do in pure code.
+
+primop RaiseIOOp "raiseIO#" GenPrimOp
+ a -> State# RealWorld -> (# State# RealWorld, b #)
+ with
+ out_of_line = True
+
primop BlockAsyncExceptionsOp "blockAsyncExceptions#" GenPrimOp
(State# RealWorld -> (# State# RealWorld, a #))
-> (State# RealWorld -> (# State# RealWorld, a #))
needs_wrapper = True
has_side_effects = True
out_of_line = True
+
+primop AsyncDoProcOp "asyncDoProc#" GenPrimOp
+ Addr# -> Addr# -> State# RealWorld-> (# State# RealWorld, Int#, Int# #)
+ {Asynchronously perform procedure (first arg), passing it 2nd arg.}
+ with
+ needs_wrapper = True
+ has_side_effects = True
+ out_of_line = True
+
#endif
------------------------------------------------------------------------
has_side_effects = True
out_of_line = True
-primop ForkProcessOp "forkProcess#" GenPrimOp
- State# RealWorld -> (# State# RealWorld, Int# #)
- with
- has_side_effects = True
- out_of_line = True
-
primop KillThreadOp "killThread#" GenPrimOp
ThreadId# -> a -> State# RealWorld -> State# RealWorld
with
with
has_side_effects = True
out_of_line = True
+
+primop IsCurrentThreadBoundOp "isCurrentThreadBound#" GenPrimOp
+ State# RealWorld -> (# State# RealWorld, Int# #)
+ with
+ out_of_line = True
------------------------------------------------------------------------
section "Weak pointers"