[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.
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
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
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