diff options
author | Simon Marlow <marlowsd@gmail.com> | 2008-12-10 15:04:25 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2008-12-10 15:04:25 +0000 |
commit | 6c095bfa3c8c81b52ad92853acd326453d320d7b (patch) | |
tree | 3f7658288a4f7f0744bb4959ca5a6113cf02babd /compiler/prelude/primops.txt.pp | |
parent | d4a17c3a253d02c2ebf2315e71a29cb740278977 (diff) | |
download | haskell-6c095bfa3c8c81b52ad92853acd326453d320d7b.tar.gz |
FIX #1364: added support for C finalizers that run as soon as the value is not longer reachable.
Patch originally by Ivan Tomac <tomac@pacific.net.au>, amended by
Simon Marlow:
- mkWeakFinalizer# commoned up with mkWeakFinalizerEnv#
- GC parameters to ALLOC_PRIM fixed
Diffstat (limited to 'compiler/prelude/primops.txt.pp')
-rw-r--r-- | compiler/prelude/primops.txt.pp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/prelude/primops.txt.pp b/compiler/prelude/primops.txt.pp index 77ef9de118..1e4145310c 100644 --- a/compiler/prelude/primops.txt.pp +++ b/compiler/prelude/primops.txt.pp @@ -1557,6 +1557,12 @@ primop MkWeakOp "mkWeak#" GenPrimOp has_side_effects = True out_of_line = True +primop MkWeakForeignEnvOp "mkWeakForeignEnv#" GenPrimOp + o -> b -> Addr# -> Addr# -> Int# -> Addr# -> State# RealWorld -> (# State# RealWorld, Weak# b #) + with + has_side_effects = True + out_of_line = True + primop DeRefWeakOp "deRefWeak#" GenPrimOp Weak# a -> State# RealWorld -> (# State# RealWorld, Int#, a #) with |