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

Re: Clarification of SCHEME_GC_PROTECT/SCHEME_GC_UNPROTECT



>>>>> "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