diff options
author | Ian Lynagh <igloo@earth.li> | 2010-04-09 10:42:07 +0000 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2010-04-09 10:42:07 +0000 |
commit | 129e7b91d1cd0fc583b6bba01e39d10c30db18be (patch) | |
tree | 48d65f3e5e26839d601ecdb226b7264140a0b5d8 /rts/RetainerProfile.c | |
parent | f278f0676579f67075033a4f9857715909c4b71e (diff) | |
download | haskell-129e7b91d1cd0fc583b6bba01e39d10c30db18be.tar.gz |
Handle IND_STATIC in isRetainer
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.
Diffstat (limited to 'rts/RetainerProfile.c')
-rw-r--r-- | rts/RetainerProfile.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c index d14ba06bf6..07a3db435b 100644 --- a/rts/RetainerProfile.c +++ b/rts/RetainerProfile.c @@ -1054,6 +1054,10 @@ isRetainer( StgClosure *c ) case PAP: // indirection case IND_PERM: + // 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: @@ -1069,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: |