summaryrefslogtreecommitdiff
path: root/rts/LdvProfile.c
diff options
context:
space:
mode:
authorÖmer Sinan Ağacan <omeragacan@gmail.com>2018-04-13 11:31:56 -0400
committerBen Gamari <ben@smart-cactus.org>2018-04-13 11:33:09 -0400
commita303584e58b3f4791bc5881cb722e7f498e14554 (patch)
tree74cbbeb5f31117b4261b0f976d204567d8a7d3b5 /rts/LdvProfile.c
parent78ff6e541d33d2d2caf52d2cb4578cd7b745d282 (diff)
downloadhaskell-a303584e58b3f4791bc5881cb722e7f498e14554.tar.gz
Fix processHeapClosureForDead CONSTR_NOCAF case:
CONSTR_NOCAF was introduced with 55d535da10d as a replacement for CONSTR_STATIC and CONSTR_NOCAF_STATIC, however, as explained in Note [static constructors], we copy CONSTR_NOCAFs (which can also be seen in evacuate) during GC, and they can become dead, like other CONSTR_X_Ys. processHeapClosureForDead is updated to reflect this. Reviewers: bgamari, simonmar, erikd Subscribers: thomie, carter GHC Trac Issues: #7836 Differential Revision: https://phabricator.haskell.org/D4567
Diffstat (limited to 'rts/LdvProfile.c')
-rw-r--r--rts/LdvProfile.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/rts/LdvProfile.c b/rts/LdvProfile.c
index 789941603a..7cf9cebb0c 100644
--- a/rts/LdvProfile.c
+++ b/rts/LdvProfile.c
@@ -101,6 +101,7 @@ processHeapClosureForDead( const StgClosure *c )
case CONSTR_2_0:
case CONSTR_1_1:
case CONSTR_0_2:
+ case CONSTR_NOCAF:
case FUN:
case FUN_1_0:
case FUN_0_1:
@@ -130,7 +131,6 @@ processHeapClosureForDead( const StgClosure *c )
case IND_STATIC:
case FUN_STATIC:
case THUNK_STATIC:
- case CONSTR_NOCAF:
// stack objects
case UPDATE_FRAME:
case CATCH_FRAME:
@@ -139,6 +139,9 @@ processHeapClosureForDead( const StgClosure *c )
case RET_BCO:
case RET_SMALL:
case RET_BIG:
+ case CATCH_STM_FRAME:
+ case CATCH_RETRY_FRAME:
+ case ATOMICALLY_FRAME:
// others
case INVALID_OBJECT:
case COMPACT_NFDATA: