From d46ebba46c141e9d55519d064c3661644dc85142 Mon Sep 17 00:00:00 2001 From: Richard Kistruck Date: Thu, 22 Mar 2007 14:02:14 +0000 Subject: [PATCH] Mps br/unfixed-summary: good: amcsegcheck: nailboard onlyif segnailed; AMCSegDescribe now splits Mobile vs. Stuck, clearer Map symbols, add key. Copied from Perforce Change: 161978 ServerID: perforce.ravenbrook.com --- mps/code/poolamc.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/mps/code/poolamc.c b/mps/code/poolamc.c index 67cf3eff7f5..496e4876801 100644 --- a/mps/code/poolamc.c +++ b/mps/code/poolamc.c @@ -106,6 +106,9 @@ static Bool amcSegCheck(amcSeg amcseg) CHECKD(GCSeg, &amcseg->gcSegStruct); CHECKL(*amcseg->segTypeP == AMCPTypeNailboard || *amcseg->segTypeP == AMCPTypeGen); + if (*amcseg->segTypeP == AMCPTypeNailboard) { + CHECKL(SegNailed(amcSeg2Seg(amcseg)) != TraceSetEMPTY); + } CHECKL(BoolCheck(amcseg->new)); return TRUE; } @@ -172,10 +175,6 @@ static Res AMCSegDescribe(Seg seg, mps_lib_FILE *stream) base = SegBase(seg); p = AddrAdd(base, pool->format->headerSize); limit = SegLimit(seg); - if (SegBuffer(seg) != NULL) - init = BufferGetInit(SegBuffer(seg)); - else - init = limit; res = WriteF(stream, "AMC seg $P [$A,$A){\n", @@ -187,13 +186,22 @@ static Res AMCSegDescribe(Seg seg, mps_lib_FILE *stream) res = WriteF(stream, " Boarded\n", NULL); /* @@@@ should have AMCNailboardDescribe() */ } else { - res = WriteF(stream, " Mobile or Stuck\n", NULL); + if (SegNailed(seg) == TraceSetEMPTY) { + res = WriteF(stream, " Mobile\n", NULL); + } else { + res = WriteF(stream, " Stuck\n", NULL); + } } if (res != ResOK) return res; - res = WriteF(stream, " Map\n", NULL); + res = WriteF(stream, " Map: *===:object bbbb:buffer\n", NULL); if (res != ResOK) return res; + if (SegBuffer(seg) != NULL) + init = BufferGetInit(SegBuffer(seg)); + else + init = limit; + for(i = base; i < limit; i = AddrAdd(i, row)) { Addr j; char c; @@ -207,7 +215,7 @@ static Res AMCSegDescribe(Seg seg, mps_lib_FILE *stream) if (j >= limit) c = ' '; else if (j >= init) - c = '.'; + c = 'b'; else if (j == p) { c = '*'; p = (pool->format->skip)(p);