From 2d10c3a141db991ffe9964ed3fab414bcce3602d Mon Sep 17 00:00:00 2001
From: David Lovemore
Date: Mon, 18 Aug 2014 12:06:03 +0100
Subject: [PATCH] Collections now non-incremental. simple change to tracepoll
to make collections do work until they are finished.
Copied from Perforce
Change: 186964
ServerID: perforce.ravenbrook.com
---
mps/code/trace.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/mps/code/trace.c b/mps/code/trace.c
index 163d8b63a39..71d062a3e45 100644
--- a/mps/code/trace.c
+++ b/mps/code/trace.c
@@ -1817,6 +1817,7 @@ Size TracePoll(Globals globals)
Res res;
Arena arena;
Size scannedSize;
+ Bool incremental = FALSE;
AVERT(Globals, globals);
arena = GlobalsArena(globals);
@@ -1888,7 +1889,9 @@ Size TracePoll(Globals globals)
trace = ArenaTrace(arena, (TraceId)0);
AVER(arena->busyTraces == TraceSetSingle(trace));
oldScanned = traceWorkClock(trace);
- TraceQuantum(trace);
+ do {
+ TraceQuantum(trace);
+ } while(!incremental && trace->state != TraceFINISHED);
scannedSize = traceWorkClock(trace) - oldScanned;
if(trace->state == TraceFINISHED) {
TraceDestroy(trace);