summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-04-14 12:36:59 -0400
committerBen Gamari <ben@smart-cactus.org>2019-10-22 18:57:42 -0400
commitcb1b0145050a59e4828d24f7e4e519d20d483251 (patch)
treef34d981fe3cd879801a48cabea26117111d9211c
parentd84240c9cdf5a650528b4396757b36e381ae9253 (diff)
downloadhaskell-cb1b0145050a59e4828d24f7e4e519d20d483251.tar.gz
XXX: Various tracing
-rw-r--r--rts/sm/GC.c1
-rw-r--r--rts/sm/NonMovingMark.c4
-rw-r--r--rts/sm/NonMovingSweep.c2
-rw-r--r--rts/sm/Storage.c3
4 files changed, 10 insertions, 0 deletions
diff --git a/rts/sm/GC.c b/rts/sm/GC.c
index 55adc69700..fceff45114 100644
--- a/rts/sm/GC.c
+++ b/rts/sm/GC.c
@@ -1825,6 +1825,7 @@ resizeGenerations (void)
}
#if 0
+ debugBelch("n_words: %lu, live_estimate=%lu\n", oldest_gen->n_words, oldest_gen->live_estimate);
debugBelch("live: %d, min_alloc: %d, size : %d, max = %d\n", live,
min_alloc, size, max);
debugBelch("resize_gen: n_blocks: %lu, n_large_block: %lu, n_compact_blocks: %lu\n",
diff --git a/rts/sm/NonMovingMark.c b/rts/sm/NonMovingMark.c
index 03e342806a..8978b6b993 100644
--- a/rts/sm/NonMovingMark.c
+++ b/rts/sm/NonMovingMark.c
@@ -1694,6 +1694,7 @@ nonmovingMark (MarkQueue *queue)
case NULL_ENTRY:
// Perhaps the update remembered set has more to mark...
if (upd_rem_set_block_list) {
+ trace(1, "Starting taking updremset");
ACQUIRE_LOCK(&upd_rem_set_lock);
bdescr *old = queue->blocks;
queue->blocks = upd_rem_set_block_list;
@@ -1701,12 +1702,15 @@ nonmovingMark (MarkQueue *queue)
upd_rem_set_block_list = NULL;
RELEASE_LOCK(&upd_rem_set_lock);
+ trace(1, "Currently taking updremset");
ACQUIRE_SM_LOCK;
freeGroup(old);
RELEASE_SM_LOCK;
+ trace(1, "Finished taking updremset");
} else {
// Nothing more to do
debugTrace(DEBUG_nonmoving_gc, "Finished mark pass: %d", count);
+ trace(1, "Finished mark pass");
traceConcMarkEnd(count);
return;
}
diff --git a/rts/sm/NonMovingSweep.c b/rts/sm/NonMovingSweep.c
index cf5fcd70d7..87bcadf7ad 100644
--- a/rts/sm/NonMovingSweep.c
+++ b/rts/sm/NonMovingSweep.c
@@ -384,6 +384,7 @@ void nonmovingSweepStableNameTable()
// a stable name can die during moving heap collection and we can't use
// nonmovingIsAlive on those objects. Inefficient.
+ trace(1, "StartNonmovingSweepStableNameTable")
stableNameLock();
FOR_EACH_STABLE_NAME(
p, {
@@ -399,4 +400,5 @@ void nonmovingSweepStableNameTable()
}
});
stableNameUnlock();
+ trace(1, "EndNonmovingSweepStableNameTable")
}
diff --git a/rts/sm/Storage.c b/rts/sm/Storage.c
index f04b3c5929..17d08f406b 100644
--- a/rts/sm/Storage.c
+++ b/rts/sm/Storage.c
@@ -1466,6 +1466,9 @@ calcNeeded (bool force_major, memcount *blocks_needed)
blocks += gen->n_large_blocks
+ gen->n_compact_blocks;
+// debugBelch("calcNeeded(%d): blocks: %lu, n_blocks: %lu, max_blocks: %lu\n",
+// g, blocks, gen->n_blocks, gen->max_blocks);
+
// we need at least this much space
needed += blocks;