X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=ghc%2Fcompiler%2Fprelude%2Fprimops.txt.pp;h=37c6c6f7a8d746643c6903e5fcdfa0a9cae512d6;hp=8cde1b805f03dba16db99d5241ad5a3ef7760c61;hb=d89872a45b581ba3f086c636126a44d97ef45be6;hpb=1f730da425bb17f8c80f0fb3d576a37823558565 diff --git a/ghc/compiler/prelude/primops.txt.pp b/ghc/compiler/prelude/primops.txt.pp index 8cde1b8..37c6c6f 100644 --- a/ghc/compiler/prelude/primops.txt.pp +++ b/ghc/compiler/prelude/primops.txt.pp @@ -1,5 +1,5 @@ ----------------------------------------------------------------------- --- $Id: primops.txt.pp,v 1.26 2003/03/24 14:46:53 simonmar Exp $ +-- $Id: primops.txt.pp,v 1.27 2003/06/19 10:42:26 simonmar Exp $ -- -- Primitive Operations -- @@ -1312,6 +1312,15 @@ primop RaiseOp "raise#" GenPrimOp 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 #))