Re: Clarification of SCHEME_GC_PROTECT/SCHEME_GC_UNPROTECT Michael Sperber (25 Feb 2004 16:13 UTC)

Re: Clarification of SCHEME_GC_PROTECT/SCHEME_GC_UNPROTECT Michael Sperber 25 Feb 2004 16:11 UTC

>>>>> "Ray" == Ray Dillinger <xxxxxx@sonic.net> 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