[Haskell-cafe] Sometimes pinned memory?
dons at galois.com
Wed Nov 11 16:35:19 EST 2009
> Thanks, Don. What made me think that this might be possible was the
> existence of Foreign.StablePtr, since that seems to take a Haskell
> expression and pin it down. Could this mechanism be harness to pin down
> arrays, or am I misunderstanding how it works? (Is StablePtr really just
> making a copy of the expression behind the scenes?)
That doesn't make the memory actually stable, it just keeps a dynamic
association between a stable pointer and the actual memory address, so
you can look up where a block of memory has moved to, keying only with a
> My motivation for this is that I will be sweeping back and forth along a
> data structure that is chain of memory blocks (essentially a pointed
> list), with ~ 10 to 1000 beads. At any given time I am only working
> with and updating one bead on the chain, so I am wondering if trying to
> use unpinned memory for the beads not in use would help by speeding up
> allocations and allowing the g.c. to rearrange their layout in memory.
> Each bead has a few memory chunks ranging from ~ 100 bytes to possibly up
> to tens of kilobytes, depending on a scaling parameter on my algorithm.
If there are many small chunks, unpinned memory is better. Might be ok
to copy into pinned memory for the foreign call.
More information about the Haskell-Cafe