I don't believe in "(may GC)"
Tom Lord 05 Jan 2004 01:21 UTC
The draft FFI says:
double SCHEME_EXTRACT_DOUBLE(scheme_value)
char * SCHEME_EXTRACT_STRING(scheme_value)
Neither says "(may GC)".
I don't like that.
If I'm using some exotic number representation (constructive reals,
perhaps), then EXTRACT_DOUBLE may very well involve some pretty hairy,
hence possibly GC-causing, computation.
If I'm using some exotic string representations (I'm working on a
functional-splay-tree string type for Pika) -- same deal:
extract-string may take some (possibly GC-causing) work.
Even something innocent like:
int SCHEME_CHAR_P(scheme_value)
can cause GC if my implementation let's me attach to a hook in its
implementation.
In short, even if you are going to be stubborn about concurrent
threads or async execution an insist that GC can only happen "at
certain times" -- I'm not convinced that there is a single entry point
anywhere in the FFI which does not qualify for "(may GC)".
-t