diff options
author | Simon Marlow <marlowsd@gmail.com> | 2010-03-15 09:32:56 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2010-03-15 09:32:56 +0000 |
commit | adf339b2f7fefe396ab5e78206c263830c9702f7 (patch) | |
tree | 01bc2727e27b5ee7fd947f8f0559501c5afb89ad /rts/RetainerProfile.c | |
parent | 0f183f73e2ad22b2a2225a388d024e0559862c66 (diff) | |
download | haskell-adf339b2f7fefe396ab5e78206c263830c9702f7.tar.gz |
Fix profiling build following removal of specific STM object types
Diffstat (limited to 'rts/RetainerProfile.c')
-rw-r--r-- | rts/RetainerProfile.c | 46 |
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; |