projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix package shadowing order (#4072)
[ghc-hetmet.git]
/
rts
/
RetainerProfile.c
diff --git
a/rts/RetainerProfile.c
b/rts/RetainerProfile.c
index
b5db15a
..
07a3db4
100644
(file)
--- 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:
*first_child = ((StgSelector *)c)->selectee;
return;
case IND_PERM:
- case IND_OLDGEN_PERM:
- case IND_OLDGEN:
case BLACKHOLE:
*first_child = ((StgInd *)c)->indirectee;
return;
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 MUT_VAR_DIRTY:
case THUNK_SELECTOR:
case IND_PERM:
- case IND_OLDGEN_PERM:
- case IND_OLDGEN:
case CONSTR_1_1:
// cannot appear
case PAP:
case CONSTR_1_1:
// cannot appear
case PAP:
@@
-1058,8
+1054,10
@@
isRetainer( StgClosure *c )
case PAP:
// indirection
case IND_PERM:
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:
case BLACKHOLE:
// static objects
case CONSTR_STATIC:
@@
-1075,8
+1073,6
@@
isRetainer( StgClosure *c )
//
// Error case
//
//
// 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:
// CONSTR_NOCAF_STATIC
// cannot be *c, *cp, *r in the retainer profiling loop.
case CONSTR_NOCAF_STATIC: