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