STM invariants
[ghc-hetmet.git] / rts / RetainerProfile.c
index c5c3de5..e63fb54 100644 (file)
@@ -591,8 +591,8 @@ push( StgClosure *c, retainer c_child_r, StgClosure **first_child )
            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:
@@ -612,8 +612,6 @@ push( StgClosure *c, retainer c_child_r, StgClosure **first_child )
     case AP_STACK:
     case TSO:
     case IND_STATIC:
-    case CONSTR_INTLIKE:
-    case CONSTR_CHARLIKE:
     case CONSTR_NOCAF_STATIC:
        // stack objects
     case UPDATE_FRAME:
@@ -832,13 +830,13 @@ pop( StgClosure **c, StgClosure **cp, retainer *r )
            *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;
@@ -846,7 +844,7 @@ pop( StgClosure **c, StgClosure **cp, retainer *r )
            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();
@@ -974,8 +972,6 @@ pop( StgClosure **c, StgClosure **cp, retainer *r )
        case AP_STACK:
        case TSO:
        case IND_STATIC:
-       case CONSTR_INTLIKE:
-       case CONSTR_CHARLIKE:
        case CONSTR_NOCAF_STATIC:
            // stack objects
        case RET_DYN:
@@ -1129,7 +1125,7 @@ isRetainer( StgClosure *c )
     case BCO:
     case ARR_WORDS:
        // STM
-    case TVAR_WAIT_QUEUE:
+    case TVAR_WATCH_QUEUE:
     case TREC_HEADER:
     case TREC_CHUNK:
        return rtsFalse;
@@ -1139,10 +1135,8 @@ isRetainer( StgClosure *c )
        //
        // 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.
@@ -1609,8 +1603,6 @@ inner_loop:
 #ifdef DEBUG_RETAINER
     switch (typeOfc) {
     case IND_STATIC:
-    case CONSTR_INTLIKE:
-    case CONSTR_CHARLIKE:
     case CONSTR_NOCAF_STATIC:
     case CONSTR_STATIC:
     case THUNK_STATIC:
@@ -1648,8 +1640,6 @@ inner_loop:
        // 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
@@ -1880,8 +1870,6 @@ computeRetainerSet( void )
                    case IND_STATIC:
                        // no cost involved
                        break;
-                   case CONSTR_INTLIKE:
-                   case CONSTR_CHARLIKE:
                    case CONSTR_NOCAF_STATIC:
                    case CONSTR_STATIC:
                    case THUNK_STATIC:
@@ -2012,8 +2000,6 @@ retainerProfile(void)
   pcostArrayLinear(FUN_STATIC);
   pcostArrayLinear(CONSTR_STATIC);
   pcostArrayLinear(CONSTR_NOCAF_STATIC);
-  pcostArrayLinear(CONSTR_INTLIKE);
-  pcostArrayLinear(CONSTR_CHARLIKE);
 */
 #endif