X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRetainerProfile.c;h=07a3db435b5847a7dda97627a263422bf6175ea8;hb=129e7b91d1cd0fc583b6bba01e39d10c30db18be;hp=b5db15a7b6b346f1eeae58bfef176f7ba32131f3;hpb=5d52d9b64c21dcf77849866584744722f8121389;p=ghc-hetmet.git diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c index b5db15a..07a3db4 100644 --- a/rts/RetainerProfile.c +++ b/rts/RetainerProfile.c @@ -466,8 +466,6 @@ push( StgClosure *c, retainer c_child_r, StgClosure **first_child ) *first_child = ((StgSelector *)c)->selectee; return; case IND_PERM: - case IND_OLDGEN_PERM: - case IND_OLDGEN: case BLACKHOLE: *first_child = ((StgInd *)c)->indirectee; return; @@ -921,8 +919,6 @@ pop( StgClosure **c, StgClosure **cp, retainer *r ) case MUT_VAR_DIRTY: case THUNK_SELECTOR: case IND_PERM: - case IND_OLDGEN_PERM: - case IND_OLDGEN: case CONSTR_1_1: // cannot appear case PAP: @@ -1058,8 +1054,10 @@ isRetainer( StgClosure *c ) case PAP: // indirection case IND_PERM: - case IND_OLDGEN_PERM: - case IND_OLDGEN: + // IND_STATIC used to be an error, but at the moment it can happen + // as isAlive doesn't look through IND_STATIC as it ignores static + // closures. See trac #3956 for a program that hit this error. + case IND_STATIC: case BLACKHOLE: // static objects case CONSTR_STATIC: @@ -1075,8 +1073,6 @@ isRetainer( StgClosure *c ) // // Error case // - // IND_STATIC cannot be *c, *cp, *r in the retainer profiling loop. - case IND_STATIC: // CONSTR_NOCAF_STATIC // cannot be *c, *cp, *r in the retainer profiling loop. case CONSTR_NOCAF_STATIC: