From 8bfd101b3454e841b36b2bb952319624fea1c088 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Wed, 23 Mar 2016 14:23:14 +0000 Subject: [PATCH] Responding to review by gdr . Copied from Perforce Change: 190336 ServerID: perforce.ravenbrook.com --- mps/code/mpmst.h | 2 +- mps/code/seg.c | 3 ++- mps/code/shield.c | 6 ++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/mps/code/mpmst.h b/mps/code/mpmst.h index b7e338c1319..99c63458825 100644 --- a/mps/code/mpmst.h +++ b/mps/code/mpmst.h @@ -699,7 +699,7 @@ typedef struct SortStruct { #define ShieldSig ((Sig)0x519581E1) /* SIGnature SHEILd */ typedef struct ShieldStruct { - Sig sig; + Sig sig; /* design.mps.sig */ Bool inside; /* design.mps.shield.def.inside */ Seg *queue; /* queue of unsynced segs */ Count length; /* number of elements in shield queue */ diff --git a/mps/code/seg.c b/mps/code/seg.c index e7c43c31ddf..bd0abeb018b 100644 --- a/mps/code/seg.c +++ b/mps/code/seg.c @@ -224,7 +224,7 @@ static void SegFinish(Seg seg) AVER(seg->depth == 0); if (seg->queued) ShieldFlush(PoolArena(SegPool(seg))); - AVER(seg->queued == FALSE); + AVER(!seg->queued); limit = SegLimit(seg); @@ -686,6 +686,7 @@ Bool SegCheck(Seg seg) CHECKL(AddrIsArenaGrain(TractBase(seg->firstTract), arena)); CHECKL(AddrIsArenaGrain(seg->limit, arena)); CHECKL(seg->limit > TractBase(seg->firstTract)); + CHECKL(BoolCheck(seg->queued)); /* Each tract of the segment must agree about white traces. Note * that even if the CHECKs are compiled away there is still a diff --git a/mps/code/shield.c b/mps/code/shield.c index 0a00ae8f740..61976403a5c 100644 --- a/mps/code/shield.c +++ b/mps/code/shield.c @@ -46,6 +46,12 @@ void ShieldDestroyQueue(Shield shield, Arena arena) void ShieldFinish(Shield shield) { + /* The queue should already have been destroyed by + GlobalsPrepareToDestroy calling ShieldDestroyQueue. */ + AVER(shield->length == 0); + AVER(shield->limit == 0); + AVER(shield->queue == NULL); + AVER(shield->depth == 0); AVER(shield->unsynced == 0); AVER(shield->holds == 0);