summaryrefslogtreecommitdiff
path: root/rts/sm
diff options
context:
space:
mode:
authorsimonmar@microsoft.com <unknown>2007-11-27 16:07:17 +0000
committersimonmar@microsoft.com <unknown>2007-11-27 16:07:17 +0000
commit02038ff3db11048d90f59b9c05bc188180e0db39 (patch)
tree6178b7ea5cf402a68ad4d5d1e2e71aa153fe51eb /rts/sm
parent8425e6e596bb9866d7dc6ab00488fdee154f9bfd (diff)
downloadhaskell-02038ff3db11048d90f59b9c05bc188180e0db39.tar.gz
count the number of todo blocks, and add a trace
Diffstat (limited to 'rts/sm')
-rw-r--r--rts/sm/GCUtils.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/rts/sm/GCUtils.c b/rts/sm/GCUtils.c
index 441bb3e64b..6341067565 100644
--- a/rts/sm/GCUtils.c
+++ b/rts/sm/GCUtils.c
@@ -17,6 +17,7 @@
#include "GC.h"
#include "GCUtils.h"
#include "Printer.h"
+#include "Trace.h"
#ifdef THREADED_RTS
SpinLock gc_alloc_block_sync;
@@ -57,6 +58,7 @@ grab_todo_block (step_workspace *ws)
if (stp->todos) {
bd = stp->todos;
stp->todos = bd->link;
+ stp->n_todos--;
bd->link = NULL;
}
RELEASE_SPIN_LOCK(&stp->sync_todo);
@@ -70,6 +72,8 @@ push_todo_block (bdescr *bd, step *stp)
ACQUIRE_SPIN_LOCK(&stp->sync_todo);
bd->link = stp->todos;
stp->todos = bd;
+ stp->n_todos++;
+ trace(TRACE_gc, "step %d, n_todos: %d", stp->abs_no, stp->n_todos);
RELEASE_SPIN_LOCK(&stp->sync_todo);
}