summaryrefslogtreecommitdiff
path: root/rts/Messages.c
diff options
context:
space:
mode:
authorÖmer Sinan Ağacan <omeragacan@gmail.com>2019-02-22 10:44:27 +0300
committerBen Gamari <ben@smart-cactus.org>2019-02-22 11:38:57 -0500
commit6698bbadb99695e97f0f07b36f57dd06193074ae (patch)
tree41f75effa2f1802a60cc8364d50d2bd4b46d8aba /rts/Messages.c
parenta4f7fc5e8a3002f19b78d7982735a2d42dd744b1 (diff)
downloadhaskell-wip/nonmoving-gc.tar.gz
Remove origin arguments from write barrier functionswip/nonmoving-gc
Write barriers push old values of updated field, e.g. when we have *q = p; we do updateRemembSetPushClosure(*q, q); *q = p; Here the second argument ("origin") is not useful because by the time we do the update we invalidate "origin" (`q` is no longer origin of old `*q`). In general it doesn't make sense to record origins in write barriers so we remove all origin arguments from write barriers. Fixes #170.
Diffstat (limited to 'rts/Messages.c')
-rw-r--r--rts/Messages.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/rts/Messages.c b/rts/Messages.c
index 6a09cd898b..89415ea3d6 100644
--- a/rts/Messages.c
+++ b/rts/Messages.c
@@ -257,7 +257,7 @@ loop:
// point to the BLOCKING_QUEUE from the BLACKHOLE
write_barrier(); // make the BQ visible
if (nonmoving_write_barrier_enabled) {
- updateRemembSetPushClosure(cap, (StgClosure*)p, NULL);
+ updateRemembSetPushClosure(cap, (StgClosure*)p);
}
((StgInd*)bh)->indirectee = (StgClosure *)bq;
recordClosureMutated(cap,bh); // bh was mutated
@@ -290,7 +290,7 @@ loop:
if (nonmoving_write_barrier_enabled) {
// We are about to overwrite bq->queue; make sure its current value
// makes it into the update remembered set
- updateRemembSetPushClosure(cap, (StgClosure*)bq->queue, NULL);
+ updateRemembSetPushClosure(cap, (StgClosure*)bq->queue);
}
msg->link = bq->queue;
bq->queue = msg;