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

Re: Clarification of SCHEME_GC_PROTECT/SCHEME_GC_UNPROTECT

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.



>>>>> "Ray" == Ray Dillinger <bear@xxxxxxxxx> writes:

Ray> When you say that SCHEME_GC_PROTECT "registers the <n> variables
Ray> (lvalues) with the garbage collector" you mean, I believe, to say that
Ray> it adds them to its root set?  This would protect the variables, and
Ray> anything reachable from them, from GC, regardless of whether they are
Ray> reachable from any other scheme variable.

Ray> When you say that SCHEME_GC_UNPROTECT "removes the block's protected
Ray> values from the garbage collector's list" you mean, I believe, to say
Ray> that it removes them from its root set?  They would still be protected
Ray> from GC if they are still reachable from anything in the remaining
Ray> root set.

Yes.

Ray> If this is what you mean, then I don't think there is a problem with
Ray> it except that maybe the wording should be clearer abut the visible
Ray> consequences. 

Good point.  Will do.

Ray> Is there a rationale for the number 12 in the definition of
Ray> SCHEME_DECLARE_GC_PROTECT?  It seems an odd choice when it's just as
Ray> easy to protect a single freshly-allocated scheme vector of arbitrary
Ray> length.

No particular one, except that we found that there was a significant
number of functions with >10 arguments that were <=12, and very, very
few, above 12.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla