summaryrefslogtreecommitdiff
path: root/rts/RetainerProfile.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2010-12-16 10:39:00 +0000
committerSimon Marlow <marlowsd@gmail.com>2010-12-16 10:39:00 +0000
commit7cc184af587cdc8f29608cd98b738fa0322cfec4 (patch)
tree49ce2e300dcdd7624b4f74a326cdc812f9c0018c /rts/RetainerProfile.c
parent470d52df0101a2f3c528b35e046ef9814ae6e5a5 (diff)
downloadhaskell-7cc184af587cdc8f29608cd98b738fa0322cfec4.tar.gz
fix retainer profiling: add missing case for TSO
Diffstat (limited to 'rts/RetainerProfile.c')
-rw-r--r--rts/RetainerProfile.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c
index 48473d2480..d125c9c928 100644
--- a/rts/RetainerProfile.c
+++ b/rts/RetainerProfile.c
@@ -1684,6 +1684,23 @@ inner_loop:
((StgStack *)c)->stack + ((StgStack *)c)->stack_size);
goto loop;
+ case TSO:
+ {
+ StgTSO *tso = (StgTSO *)c;
+
+ retainClosure(tso->stackobj, c, c_child_r);
+ retainClosure(tso->blocked_exceptions, c, c_child_r);
+ retainClosure(tso->bq, c, c_child_r);
+ retainClosure(tso->trec, c, c_child_r);
+ if ( tso->why_blocked == BlockedOnMVar
+ || tso->why_blocked == BlockedOnBlackHole
+ || tso->why_blocked == BlockedOnMsgThrowTo
+ ) {
+ retainClosure(tso->block_info.closure, c, c_child_r);
+ }
+ goto loop;
+ }
+
case PAP:
{
StgPAP *pap = (StgPAP *)c;