summaryrefslogtreecommitdiff
path: root/rts/RetainerProfile.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2010-03-15 09:32:56 +0000
committerSimon Marlow <marlowsd@gmail.com>2010-03-15 09:32:56 +0000
commitadf339b2f7fefe396ab5e78206c263830c9702f7 (patch)
tree01bc2727e27b5ee7fd947f8f0559501c5afb89ad /rts/RetainerProfile.c
parent0f183f73e2ad22b2a2225a388d024e0559862c66 (diff)
downloadhaskell-adf339b2f7fefe396ab5e78206c263830c9702f7.tar.gz
Fix profiling build following removal of specific STM object types
Diffstat (limited to 'rts/RetainerProfile.c')
-rw-r--r--rts/RetainerProfile.c46
1 files changed, 3 insertions, 43 deletions
diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c
index b7bc909f63..ba4d1465c8 100644
--- a/rts/RetainerProfile.c
+++ b/rts/RetainerProfile.c
@@ -510,6 +510,7 @@ push( StgClosure *c, retainer c_child_r, StgClosure **first_child )
// layout.payload.ptrs, no SRT
case CONSTR:
case PRIM:
+ case MUT_PRIM:
case BCO:
case CONSTR_STATIC:
init_ptrs(&se.info, get_itbl(c)->layout.payload.ptrs,
@@ -589,16 +590,6 @@ push( StgClosure *c, retainer c_child_r, StgClosure **first_child )
return; // no child
break;
- case TVAR_WATCH_QUEUE:
- *first_child = (StgClosure *)((StgTVarWatchQueue *)c)->closure;
- se.info.next.step = 2; // 2 = second
- break;
- case TVAR:
- *first_child = (StgClosure *)((StgTVar *)c)->current_value;
- break;
- case TREC_HEADER:
- *first_child = (StgClosure *)((StgTRecHeader *)c)->enclosing_trec;
- break;
case TREC_CHUNK:
*first_child = (StgClosure *)((StgTRecChunk *)c)->prev_chunk;
se.info.next.step = 0; // entry no.
@@ -827,33 +818,6 @@ pop( StgClosure **c, StgClosure **cp, retainer *r )
*r = se->c_child_r;
return;
- case TVAR_WATCH_QUEUE:
- if (se->info.next.step == 2) {
- *c = (StgClosure *)((StgTVarWatchQueue *)se->c)->next_queue_entry;
- se->info.next.step++; // move to the next step
- // no popOff
- } else {
- *c = (StgClosure *)((StgTVarWatchQueue *)se->c)->prev_queue_entry;
- popOff();
- }
- *cp = se->c;
- *r = se->c_child_r;
- return;
-
- case TVAR:
- *c = (StgClosure *)((StgTVar *)se->c)->first_watch_queue_entry;
- *cp = se->c;
- *r = se->c_child_r;
- popOff();
- return;
-
- case TREC_HEADER:
- *c = (StgClosure *)((StgTRecHeader *)se->c)->current_chunk;
- *cp = se->c;
- *r = se->c_child_r;
- popOff();
- return;
-
case TREC_CHUNK: {
// These are pretty complicated: we have N entries, each
// of which contains 3 fields that we want to follow. So
@@ -884,6 +848,7 @@ pop( StgClosure **c, StgClosure **cp, retainer *r )
case CONSTR:
case PRIM:
+ case MUT_PRIM:
case BCO:
case CONSTR_STATIC:
// StgMutArrPtr.ptrs, no SRT
@@ -1045,6 +1010,7 @@ isRetainer( StgClosure *c )
case TSO:
// mutable objects
+ case MUT_PRIM:
case MVAR_CLEAN:
case MVAR_DIRTY:
case MUT_VAR_CLEAN:
@@ -1071,10 +1037,6 @@ isRetainer( StgClosure *c )
// WEAK objects are roots; there is separate code in which traversing
// begins from WEAK objects.
case WEAK:
-
- // Since the other mutvar-type things are retainers, seems
- // like the right thing to do:
- case TVAR:
return rtsTrue;
//
@@ -1112,8 +1074,6 @@ isRetainer( StgClosure *c )
case BCO:
case ARR_WORDS:
// STM
- case TVAR_WATCH_QUEUE:
- case TREC_HEADER:
case TREC_CHUNK:
return rtsFalse;