summaryrefslogtreecommitdiff
path: root/rts/RaiseAsync.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2011-02-02 15:49:55 +0000
committerSimon Marlow <marlowsd@gmail.com>2011-02-02 15:49:55 +0000
commit18896fa2b06844407fd1e0d3f85cd3db97a96ff4 (patch)
treeecea68990c0891e25a21bf25a26435e70e8e42fa /rts/RaiseAsync.c
parent8d809e0a8354e00078529eecb00db843c1602abe (diff)
downloadhaskell-18896fa2b06844407fd1e0d3f85cd3db97a96ff4.tar.gz
GC refactoring and cleanup
Now we keep any partially-full blocks in the gc_thread[] structs after each GC, rather than moving them to the generation. This should give us slightly better locality (though I wasn't able to measure any difference). Also in this patch: better sanity checking with THREADED.
Diffstat (limited to 'rts/RaiseAsync.c')
-rw-r--r--rts/RaiseAsync.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/rts/RaiseAsync.c b/rts/RaiseAsync.c
index 550f703e8d..775505f887 100644
--- a/rts/RaiseAsync.c
+++ b/rts/RaiseAsync.c
@@ -592,7 +592,7 @@ removeFromMVarBlockedQueue (StgTSO *tso)
if (mvar->head == q) {
mvar->head = q->link;
- q->header.info = &stg_IND_info;
+ OVERWRITE_INFO(q, &stg_IND_info);
if (mvar->tail == q) {
mvar->tail = (StgMVarTSOQueue*)END_TSO_QUEUE;
}
@@ -602,10 +602,10 @@ removeFromMVarBlockedQueue (StgTSO *tso)
// we lose the tail pointer when the GC shorts out the IND.
// So we use MSG_NULL as a kind of non-dupable indirection;
// these are ignored by takeMVar/putMVar.
- q->header.info = &stg_MSG_NULL_info;
+ OVERWRITE_INFO(q, &stg_MSG_NULL_info);
}
else {
- q->header.info = &stg_IND_info;
+ OVERWRITE_INFO(q, &stg_IND_info);
}
// revoke the MVar operation