Remove vectored returns.
[ghc-hetmet.git] / rts / RetainerProfile.c
index e63fb54..4920e7d 100644 (file)
 #include "RetainerSet.h"
 #include "Schedule.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"
 
@@ -620,9 +618,7 @@ push( StgClosure *c, retainer c_child_r, StgClosure **first_child )
     case RET_DYN:
     case RET_BCO:
     case RET_SMALL:
-    case RET_VEC_SMALL:
     case RET_BIG:
-    case RET_VEC_BIG:
        // invalid objects
     case IND:
     case BLOCKED_FETCH:
@@ -662,6 +658,12 @@ push( StgClosure *c, retainer c_child_r, StgClosure **first_child )
     // following statement by either a memcpy() call or a switch statement
     // on the type of the element. Currently, the size of stackElement is
     // small enough (5 words) that this direct assignment seems to be enough.
+
+    // ToDo: The line below leads to the warning:
+    //    warning: 'se.info.type' may be used uninitialized in this function
+    // This is caused by the fact that there are execution paths through the
+    // large switch statement above where some cases do not initialize this
+    // field. Is this really harmless? Can we avoid the warning?
     *stackTop = se;
 
 #ifdef DEBUG_RETAINER
@@ -980,9 +982,7 @@ pop( StgClosure **c, StgClosure **cp, retainer *r )
        case STOP_FRAME:
        case RET_BCO:
        case RET_SMALL:
-       case RET_VEC_SMALL:
        case RET_BIG:
-       case RET_VEC_BIG:
            // invalid objects
        case IND:
        case BLOCKED_FETCH:
@@ -1146,9 +1146,7 @@ isRetainer( StgClosure *c )
     case RET_DYN:
     case RET_BCO:
     case RET_SMALL:
-    case RET_VEC_SMALL:
     case RET_BIG:
-    case RET_VEC_BIG:
        // other cases
     case IND:
     case BLOCKED_FETCH:
@@ -1383,7 +1381,6 @@ retainStack( StgClosure *c, retainer c_child_r,
        case CATCH_RETRY_FRAME:
        case ATOMICALLY_FRAME:
        case RET_SMALL:
-       case RET_VEC_SMALL:
            bitmap = BITMAP_BITS(info->i.layout.bitmap);
            size   = BITMAP_SIZE(info->i.layout.bitmap);
            p++;
@@ -1408,7 +1405,6 @@ retainStack( StgClosure *c, retainer c_child_r,
 
            // large bitmap (> 32 entries, or > 64 on a 64-bit machine) 
        case RET_BIG:
-       case RET_VEC_BIG:
            size = GET_LARGE_BITMAP(&info->i)->size;
            p++;
            retain_large_bitmap(p, GET_LARGE_BITMAP(&info->i),