summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-10-02 23:29:02 -0400
committerBen Gamari <ben@well-typed.com>2019-10-04 14:34:24 -0400
commitba27fe740d4b141d2a2fa209f98a0946cb80f379 (patch)
tree06f92d021600b3ae548fd0dc7d53f492c0a4eeee
parent1357d02380641ba33b05eb87c80e6a4250cd4a3b (diff)
downloadhaskell-wip/T17297.tar.gz
rts: Fix CNF dirtying logicwip/T17297
Previously due to a silly implementation bug CNFs would never have their dirty flag set, resulting in their being added again and again to the `mut_list`. Fix this. Fixes #17297.
-rw-r--r--rts/sm/CNF.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/rts/sm/CNF.c b/rts/sm/CNF.c
index 597b7853bc..f85b390414 100644
--- a/rts/sm/CNF.c
+++ b/rts/sm/CNF.c
@@ -541,9 +541,9 @@ insertCompactHash (Capability *cap,
StgClosure *p, StgClosure *to)
{
insertHashTable(str->hash, (StgWord)p, (const void*)to);
- const StgInfoTable *strinfo = str->header.info;
- if (strinfo == &stg_COMPACT_NFDATA_CLEAN_info) {
- strinfo = &stg_COMPACT_NFDATA_DIRTY_info;
+ const StgInfoTable **strinfo = &str->header.info;
+ if (*strinfo == &stg_COMPACT_NFDATA_CLEAN_info) {
+ *strinfo = &stg_COMPACT_NFDATA_DIRTY_info;
recordClosureMutated(cap, (StgClosure*)str);
}
}