17 Jun
2002
17 Jun
'02
2:06 a.m.
Just for clarification: Is it OK to call freeHaskellFunPtr in the Haskell function pointed to itself, i.e. a kind of "self destruction"? Example: foreign import ccall "wrapper" makeCB :: IO () -> IO (FunPtr (IO ())) ... funPtr <- mfix (\self -> makeCB (do freeHaskellFunPtr self; ...)) <register funPtr somewhere in C land> ... The FFI spec doesn't say anything about this, but it would be very handy if this was allowed, e.g. for one-shot callbacks. After a short look into GHC's and Hugs' RTS I think it is OK for both systems: The thunk/adjustor has always a jump at its end, so free-ing the machine code at the jump destination does no harm. Cheers, S.