X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FSanity.c;h=c9a07725430cba314aac8b0d185239d2d4924a59;hp=a2ddff87d6e3d39bbe3978f11ffbccbf40f6af7e;hb=b0ca990457eaf7991e72b13d0040d937b5759b36;hpb=6015a94f9108a502150565577b66c23650796639 diff --git a/rts/Sanity.c b/rts/Sanity.c index a2ddff8..c9a0772 100644 --- a/rts/Sanity.c +++ b/rts/Sanity.c @@ -204,12 +204,13 @@ checkStackChunk( StgPtr sp, StgPtr stack_end ) } static void -checkPAP (StgClosure *fun, StgClosure** payload, StgWord n_args) +checkPAP (StgClosure *tagged_fun, StgClosure** payload, StgWord n_args) { + StgClosure *fun; StgClosure *p; StgFunInfoTable *fun_info; - fun = UNTAG_CLOSURE(fun); + fun = UNTAG_CLOSURE(tagged_fun); ASSERT(LOOKS_LIKE_CLOSURE_PTR(fun)); fun_info = get_fun_itbl(fun); @@ -235,6 +236,9 @@ checkPAP (StgClosure *fun, StgClosure** payload, StgWord n_args) n_args ); break; } + + ASSERT(fun_info->f.arity > TAG_MASK ? GET_CLOSURE_TAG(tagged_fun) == 1 + : GET_CLOSURE_TAG(tagged_fun) == fun_info->f.arity); } @@ -256,7 +260,8 @@ checkClosure( StgClosure* p ) info = get_itbl(p); switch (info->type) { - case MVAR: + case MVAR_CLEAN: + case MVAR_DIRTY: { StgMVar *mvar = (StgMVar *)p; ASSERT(LOOKS_LIKE_CLOSURE_PTR(mvar->head));