aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code/trace.c
diff options
context:
space:
mode:
authorRichard Kistruck2009-08-20 17:44:16 +0100
committerRichard Kistruck2009-08-20 17:44:16 +0100
commitbf80a3a11def6ba68d8f248b389ba84e4e32ced3 (patch)
tree3c38bcbc23f517245cecee1b33ffd773def51ddd /mps/code/trace.c
parent1c3940b99a3cb7be36324c0c0d9915670171c731 (diff)
downloademacs-bf80a3a11def6ba68d8f248b389ba84e4e32ced3.tar.gz
emacs-bf80a3a11def6ba68d8f248b389ba84e4e32ced3.zip
Mps br/padding: new pooltraceendmethod: do end-of-trace work
Tracer calls PoolTraceEnd() when the trace is TraceFINISHED. AbstractPoolClass uses PoolTrivTraceEnd -- a NOOP. [mpm.h, mpmst.h, mpmtypes.h, pool.c, poolabs.c] AMC overrides with AMCTraceEnd, to emit diagnostic on how well the trace went! [poolamc.c] Copied from Perforce Change: 168478 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code/trace.c')
-rw-r--r--mps/code/trace.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/mps/code/trace.c b/mps/code/trace.c
index 1082eaefe78..ff13b6180a9 100644
--- a/mps/code/trace.c
+++ b/mps/code/trace.c
@@ -770,6 +770,7 @@ static void traceReclaim(Trace trace)
770{ 770{
771 Arena arena; 771 Arena arena;
772 Seg seg; 772 Seg seg;
773 Ring node, nextNode;
773 774
774 AVER(trace->state == TraceRECLAIM); 775 AVER(trace->state == TraceRECLAIM);
775 776
@@ -805,6 +806,13 @@ static void traceReclaim(Trace trace)
805 } 806 }
806 807
807 trace->state = TraceFINISHED; 808 trace->state = TraceFINISHED;
809
810 /* Call each pool's TraceEnd method -- do end-of-trace work */
811 RING_FOR(node, &ArenaGlobals(arena)->poolRing, nextNode) {
812 Pool pool = RING_ELT(Pool, arenaRing, node);
813 PoolTraceEnd(pool, trace);
814 }
815
808 TracePostMessage(trace); /* trace end */ 816 TracePostMessage(trace); /* trace end */
809 /* Immediately pre-allocate messages for next time; failure is okay */ 817 /* Immediately pre-allocate messages for next time; failure is okay */
810 (void)TraceIdMessagesCreate(arena, trace->ti); 818 (void)TraceIdMessagesCreate(arena, trace->ti);