
Galchin, Vasili wrote:
that is what I thought .. especially after just looking at the implementation for alloca/allocaBytes. For me and others on thie group is there documentation on the ghc run-time model and also the run-time library architecture. Both would help/aid in reading the code and of course educate more people?
I'd rather use the FFI Addendum (http://www.cse.unsw.edu.au/~chak/haskell/ffi/) as reference than the ghc implementation. Section 5.8 "MarshalAlloc" says alloca :: Storable a => (Ptr a -> IO b) -> IO b Allocate a block of memory of the same size as malloc, but the reference is passed to a computation instead of being returned. When the computation terminates, free the memory area again. The operation is exception-safe; i.e., allocated memory is freed if an exception is thrown in the marshalling computation. allocaBytes :: Int -> (Ptr a -> IO b) -> IO b As alloca, but allocate a memory area of the given size. The same alignment constraint as for mallocBytes holds. Cheers Ben