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:
parent
8d9bda6dc0
commit
3877fc3762
2 changed files with 9 additions and 2 deletions
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue