From c3223cca4b084f8043bbf0fa757e4034bbf9558a Mon Sep 17 00:00:00 2001 From: Nick Barnes Date: Wed, 25 Jun 1997 15:56:54 +0100 Subject: [PATCH] Improve the check on a segment's scan state summary. See mail.richard.1997-06-24.15-33 and mail.nickb.1997-06-24.15-49. Copied from Perforce Change: 18386 ServerID: perforce.ravenbrook.com --- mps/src/trace.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mps/src/trace.c b/mps/src/trace.c index 4cf3cab1651..1177c876335 100644 --- a/mps/src/trace.c +++ b/mps/src/trace.c @@ -1,12 +1,12 @@ /* impl.c.trace: GENERIC TRACER IMPLEMENTATION * - * $HopeName: MMsrc!trace.c(trunk.29) $ + * $HopeName: MMsrc!trace.c(trunk.30) $ * Copyright (C) 1997 The Harlequin Group Limited. All rights reserved. */ #include "mpm.h" -SRCID(trace, "$HopeName: MMsrc!trace.c(trunk.29) $"); +SRCID(trace, "$HopeName: MMsrc!trace.c(trunk.30) $"); /* ScanStateCheck -- check consistency of a ScanState object */ @@ -609,9 +609,11 @@ static Res TraceScan(TraceSet ts, Rank rank, return res; } - /* The summary of references seen by scan must be a subset of */ - /* the ones we thought were there before. */ - AVER(RefSetSub(ss.summary, SegSummary(seg))); + /* The summary of references seen by scan must be equal to those */ + /* which we saw before, unless there's been a write barrier hit */ + /* in which case the segment summary is set to RefSetUNIV */ + AVER((ss.summary == SegSummary(seg)) || + (SegSummary(seg) == RefSetUNIV)); TraceSetSummary(space, seg, TraceSetUnion(ss.fixed, TraceSetDiff(ss.summary, ss.white)));