1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-25 08:12:11 -07:00

Mps master: trace and poolabs: (comment only) clarify that

PoolTrivGrey knows that a white seg is an all-white seg, and 
therefore needs no greying.

Copied from Perforce
 Change: 162946
 ServerID: perforce.ravenbrook.com
This commit is contained in:
Richard Kistruck 2007-07-19 16:50:21 +01:00
parent 8d9bda6dc0
commit 3877fc3762
2 changed files with 9 additions and 2 deletions

View file

@ -470,8 +470,12 @@ void PoolTrivGrey(Pool pool, Trace trace, Seg seg)
AVERT(Trace, trace);
AVERT(Seg, seg);
/* @@@@ The trivial grey method probably shouldn't exclude */
/* the white segments, since they might also contain grey objects. */
/* If we had a (partially) white seg, then other parts of the */
/* same seg might need to get greyed. In fact, all current pools */
/* only ever Whiten a whole seg, so we never need to Greyen any */
/* part of an already Whitened seg. So we hereby exclude white */
/* segs. */
/* @@@@ This should not really be called 'trivial'! */
if(!TraceSetIsMember(SegWhite(seg), trace))
SegSetGrey(seg, TraceSetSingle(trace));
}

View file

@ -1807,6 +1807,9 @@ void TraceStart(Trace trace, double mortality, double finishingTime)
/* of references in the segment intersects with the */
/* approximation to the white set. */
if (ZoneSetInter(SegSummary(seg), trace->white) != ZoneSetEMPTY) {
/* Note: can a white seg get greyed as well? At this point */
/* we still assume it may. (This assumption runs out in */
/* PoolTrivGrey). */
PoolGrey(SegPool(seg), trace, seg);
if (TraceSetIsMember(SegGrey(seg), trace)) {
trace->foundation += size;