Change the representation of the MVar blocked queue
[ghc-hetmet.git] / rts / sm / Compact.c
index 39284f9..7eeb90f 100644 (file)
@@ -472,7 +472,6 @@ thread_TSO (StgTSO *tso)
     if (   tso->why_blocked == BlockedOnMVar
        || tso->why_blocked == BlockedOnBlackHole
        || tso->why_blocked == BlockedOnMsgThrowTo
-       || tso->why_blocked == BlockedOnMsgWakeup
        ) {
        thread_(&tso->block_info.closure);
     }
@@ -625,11 +624,10 @@ thread_obj (StgInfoTable *info, StgPtr p)
     case CONSTR:
     case PRIM:
     case MUT_PRIM:
-    case IND_PERM:
     case MUT_VAR_CLEAN:
     case MUT_VAR_DIRTY:
-    case CAF_BLACKHOLE:
     case BLACKHOLE:
+    case BLOCKING_QUEUE:
     {
        StgPtr end;
        
@@ -664,6 +662,8 @@ thread_obj (StgInfoTable *info, StgPtr p)
        return p + sizeofW(StgMVar);
     }
     
+    case IND:
+    case IND_PERM:
     case IND_OLDGEN:
     case IND_OLDGEN_PERM:
        thread(&((StgInd *)p)->indirectee);
@@ -967,9 +967,6 @@ compact(StgClosure *static_objects)
     // any threads resurrected during this GC
     thread((void *)&resurrected_threads);
 
-    // the blackhole queue
-    thread((void *)&blackhole_queue);
-
     // the task list
     {
        Task *task;