summaryrefslogtreecommitdiff
path: root/rts/sm/GC.h
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2012-11-16 09:22:00 +0000
committerSimon Marlow <marlowsd@gmail.com>2012-11-16 11:26:20 +0000
commit6d784c43592290ec16db8b7f0f2a012dff3ed497 (patch)
treea317ef1fc1ee40883e92cde308c292f7125db2b7 /rts/sm/GC.h
parent97dc57c6e2bdbddd0a0170a283149a570a07179c (diff)
downloadhaskell-6d784c43592290ec16db8b7f0f2a012dff3ed497.tar.gz
Add a write barrier for TVAR closures
This improves GC performance when there are a lot of TVars in the heap. For instance, a TChan with a lot of elements causes a massive GC drag without this patch. There's more to do - several other STM closure types don't have write barriers, so GC performance when there are a lot of threads blocked on STM isn't great. But fixing the problem for TVar is a good start.
Diffstat (limited to 'rts/sm/GC.h')
-rw-r--r--rts/sm/GC.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/rts/sm/GC.h b/rts/sm/GC.h
index 4dc7347597..54b7c86367 100644
--- a/rts/sm/GC.h
+++ b/rts/sm/GC.h
@@ -37,7 +37,13 @@ extern long copied;
extern rtsBool work_stealing;
#ifdef DEBUG
-extern nat mutlist_MUTVARS, mutlist_MUTARRS, mutlist_MVARS, mutlist_OTHERS;
+extern nat mutlist_MUTVARS, mutlist_MUTARRS, mutlist_MVARS, mutlist_OTHERS,
+ mutlist_TVAR,
+ mutlist_TVAR_WATCH_QUEUE,
+ mutlist_TREC_CHUNK,
+ mutlist_TREC_HEADER,
+ mutlist_ATOMIC_INVARIANT,
+ mutlist_INVARIANT_CHECK_QUEUE;
#endif
#if defined(PROF_SPIN) && defined(THREADED_RTS)