[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: I don't believe in "(may GC)"

This page is part of the web mail archives of SRFI 50 from before July 7th, 2015. The new archives for SRFI 50 contain all messages, not just those from before July 7th, 2015.



   Date: Sun, 4 Jan 2004 17:21:41 -0800 (PST)
   From: Tom Lord <lord@xxxxxxx>

   The draft FFI says:

       double SCHEME_EXTRACT_DOUBLE(scheme_value)
       char * SCHEME_EXTRACT_STRING(scheme_value)

   Neither says "(may GC)".

   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.

This doesn't worry me too much; there aren't a lot of such
implementations around.

   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.

This does worry me (it's listed in the 'issues' section of the SRFI).
I think we went overboard here.  Something like

    SCHEME_EXTRACT_STRING_CONTENTS(scheme_value, index, count, buffer)

which copies 'count' characters starting from 'index' into 'buffer'
would be better.  Presumably this can be done without GCing.

   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.

Again, I don't think this will be very common.  Is there an existing
implementation for which this (or anything similar) is an issue?

                                           -Richard Kelsey