[MLton-user] FFI and pointer relocation
fluet at tti-c.org
Mon Nov 26 14:10:08 PST 2007
On Mon, 26 Nov 2007, Dave Herman wrote:
>> GC may move the ref cell. As a rule of thumb (unless you really know
>> what you are doing), any data you wish to modify on the C side should
>> be allocated from the C heap. If you wish this stuff to work from
>> both SML/NJ and MLton, I recommend that you use ML-NLFFI (the learning
>> curve is a bit steep, but it works).
> Yeah, I've briefly played with ML-NLFFI before but MLton's native FFI is so
> easy to use that I've stuck with that for now.
> For now I'll just allocate the cell in C and export a C function to check if
> the cell has changed.
If there is only one cell (which can be statically allocated), then using
MLton's _address (with the MLton.Pointer structure) or _symbol FFI may
be more efficient. There is a slight overhead in making a C call, and if
you are simply checking the cell's contents, then the above can all be
done without leaving (the generated) ML code. See
for the syntax.
More information about the MLton-user