
On Thursday 06 March 2003 10:55, Adrian Hey wrote:
On Tuesday 04 March 2003 12:36, Simon Peyton-Jones wrote:
GHC does not copy big objects, so don't worry about the copying cost. (Instead of copying, it allocates big objects to (a contiguous series of) heap blocks, with no other objects in those blocks. Then the object can "move" simply by swizzling the heap-block descriptor.)
Thanks, looks like it's option (1) then. Could you tell me what Haskell type I have to use be able to pass a pointer to this binary to C land (genuine address, not StablePtr). I don't think the standard FFI allows this at all but, IIRC, the old ghc libraries allowed you to do this with a mutable byte array.
Does anybody know the answer to this? please.. pretty please..:-) Sorry if this is a case of me failing to RTFM, but I don't think it is. Paragraph 8.1.1 of the users guide says.. "The types ByteArray and MutableByteArray may be used as basic foreign types (see FFI Addendum, Section 3.2). In C land, they map to (char *)." I can't find any way in the Base libs (or what's left of the old libs) to create a ByteArray or MutableByteArray, which leads me to suspect that they no longer exist. Should I use something else instead? Thanks -- Adrian Hey