[project @ 2003-06-27 18:28:31 by sof]
[ghc-hetmet.git] / ghc / rts / Sanity.c
index 33d1980..383ef64 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: Sanity.c,v 1.31 2002/12/11 15:36:48 simonmar Exp $
+ * $Id: Sanity.c,v 1.33 2003/04/22 16:25:12 simonmar Exp $
  *
  * (c) The GHC Team, 1998-2001
  *
@@ -113,8 +113,8 @@ checkStackFrame( StgPtr c )
        dyn = r->liveness;
        
        p = (P_)(r->payload);
-       checkSmallBitmap(p,GET_LIVENESS(r->liveness),RET_DYN_SIZE);
-       p += RET_DYN_SIZE;
+       checkSmallBitmap(p,GET_LIVENESS(r->liveness),RET_DYN_BITMAP_SIZE);
+       p += RET_DYN_BITMAP_SIZE + RET_DYN_NONPTR_REGS_SIZE;
 
        // skip over the non-pointers
        p += GET_NONPTRS(dyn);
@@ -125,7 +125,8 @@ checkStackFrame( StgPtr c )
            p++;
        }
        
-       return sizeofW(StgRetDyn) + RET_DYN_SIZE + 
+       return sizeofW(StgRetDyn) + RET_DYN_BITMAP_SIZE +
+           RET_DYN_NONPTR_REGS_SIZE +
            GET_NONPTRS(dyn) + GET_PTRS(dyn);
     }
 
@@ -272,7 +273,6 @@ checkClosure( StgClosure* p )
     case BLACKHOLE:
     case CAF_BLACKHOLE:
     case FOREIGN:
-    case BCO:
     case STABLE_NAME:
     case MUT_VAR:
     case MUT_CONS:
@@ -290,6 +290,15 @@ checkClosure( StgClosure* p )
            return sizeW_fromITBL(info);
        }
 
+    case BCO: {
+       StgBCO *bco = (StgBCO *)p;
+       ASSERT(LOOKS_LIKE_CLOSURE_PTR(bco->instrs));
+       ASSERT(LOOKS_LIKE_CLOSURE_PTR(bco->literals));
+       ASSERT(LOOKS_LIKE_CLOSURE_PTR(bco->ptrs));
+       ASSERT(LOOKS_LIKE_CLOSURE_PTR(bco->itbls));
+       return bco_sizeW(bco);
+    }
+
     case IND_STATIC: /* (1, 0) closure */
       ASSERT(LOOKS_LIKE_CLOSURE_PTR(((StgIndStatic*)p)->indirectee));
       return sizeW_fromITBL(info);