#include "RtsUtils.h"
#include "RetainerProfile.h"
#include "RetainerSet.h"
+#include "Storage.h"
#include "Schedule.h"
+#include "Stable.h"
#include "Printer.h"
-#include "Storage.h"
#include "RtsFlags.h"
#include "Weak.h"
#include "Sanity.h"
#include "Profiling.h"
#include "Stats.h"
-#include "BlockAlloc.h"
#include "ProfHeap.h"
#include "Apply.h"
return; // no child
break;
- case TVAR_WAIT_QUEUE:
- *first_child = (StgClosure *)((StgTVarWaitQueue *)c)->waiting_tso;
+ case TVAR_WATCH_QUEUE:
+ *first_child = (StgClosure *)((StgTVarWatchQueue *)c)->closure;
se.info.next.step = 2; // 2 = second
break;
case TVAR:
case AP_STACK:
case TSO:
case IND_STATIC:
- case CONSTR_INTLIKE:
- case CONSTR_CHARLIKE:
case CONSTR_NOCAF_STATIC:
// stack objects
case UPDATE_FRAME:
*r = se->c_child_r;
return;
- case TVAR_WAIT_QUEUE:
+ case TVAR_WATCH_QUEUE:
if (se->info.next.step == 2) {
- *c = (StgClosure *)((StgTVarWaitQueue *)se->c)->next_queue_entry;
+ *c = (StgClosure *)((StgTVarWatchQueue *)se->c)->next_queue_entry;
se->info.next.step++; // move to the next step
// no popOff
} else {
- *c = (StgClosure *)((StgTVarWaitQueue *)se->c)->prev_queue_entry;
+ *c = (StgClosure *)((StgTVarWatchQueue *)se->c)->prev_queue_entry;
popOff();
}
*cp = se->c;
return;
case TVAR:
- *c = (StgClosure *)((StgTVar *)se->c)->first_wait_queue_entry;
+ *c = (StgClosure *)((StgTVar *)se->c)->first_watch_queue_entry;
*cp = se->c;
*r = se->c_child_r;
popOff();
case AP_STACK:
case TSO:
case IND_STATIC:
- case CONSTR_INTLIKE:
- case CONSTR_CHARLIKE:
case CONSTR_NOCAF_STATIC:
// stack objects
case RET_DYN:
case BCO:
case ARR_WORDS:
// STM
- case TVAR_WAIT_QUEUE:
+ case TVAR_WATCH_QUEUE:
case TREC_HEADER:
case TREC_CHUNK:
return rtsFalse;
//
// IND_STATIC cannot be *c, *cp, *r in the retainer profiling loop.
case IND_STATIC:
- // CONSTR_INTLIKE, CONSTR_CHARLIKE, and CONSTR_NOCAF_STATIC
+ // CONSTR_NOCAF_STATIC
// cannot be *c, *cp, *r in the retainer profiling loop.
- case CONSTR_INTLIKE:
- case CONSTR_CHARLIKE:
case CONSTR_NOCAF_STATIC:
// Stack objects are invalid because they are never treated as
// legal objects during retainer profiling.
#ifdef DEBUG_RETAINER
switch (typeOfc) {
case IND_STATIC:
- case CONSTR_INTLIKE:
- case CONSTR_CHARLIKE:
case CONSTR_NOCAF_STATIC:
case CONSTR_STATIC:
case THUNK_STATIC:
// We just skip IND_STATIC, so its retainer set is never computed.
c = ((StgIndStatic *)c)->indirectee;
goto inner_loop;
- case CONSTR_INTLIKE:
- case CONSTR_CHARLIKE:
// static objects with no pointers out, so goto loop.
case CONSTR_NOCAF_STATIC:
// It is not just enough not to compute the retainer set for *c; it is
case IND_STATIC:
// no cost involved
break;
- case CONSTR_INTLIKE:
- case CONSTR_CHARLIKE:
case CONSTR_NOCAF_STATIC:
case CONSTR_STATIC:
case THUNK_STATIC:
pcostArrayLinear(FUN_STATIC);
pcostArrayLinear(CONSTR_STATIC);
pcostArrayLinear(CONSTR_NOCAF_STATIC);
- pcostArrayLinear(CONSTR_INTLIKE);
- pcostArrayLinear(CONSTR_CHARLIKE);
*/
#endif