diff options
author | Simon Marlow <marlowsd@gmail.com> | 2011-02-02 15:49:55 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2011-02-02 15:49:55 +0000 |
commit | 18896fa2b06844407fd1e0d3f85cd3db97a96ff4 (patch) | |
tree | ecea68990c0891e25a21bf25a26435e70e8e42fa /rts/RaiseAsync.c | |
parent | 8d809e0a8354e00078529eecb00db843c1602abe (diff) | |
download | haskell-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.c | 6 |
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 |