[project @ 2005-02-11 14:01:30 by simonmar]
authorsimonmar <unknown>
Fri, 11 Feb 2005 14:01:30 +0000 (14:01 +0000)
committersimonmar <unknown>
Fri, 11 Feb 2005 14:01:30 +0000 (14:01 +0000)
commit4d3ce7360892fec57a9ae42d77d3a7ed344e023a
tree6d65755c594f4a86222978dfc83ff3b4f34ee8fb
parenta186d6f72aa221772ffeccb99c6c538c4505b0d7
[project @ 2005-02-11 14:01:30 by simonmar]
Careful with mutable list entries that point to THUNKs: the thunk
might be updated, and the resulting IND_OLDGEN will be on the mutable
list twice.

We previously avoided this problem by having an extra MUT_CONS object
on the mutable list pointing to the THUNK, so that we could tell the
difference between the entry on the mutable list that used to be the
THUNK, and the new entry for the IND_OLDGEN.

We don't have MUT_CONS any more (this was part of the cleanup from
separating the mutable list from the heap).  So, now, when scavenging
an IND_OLDGEN on the mutable list, we check whether it is pointing to
an already-evacuated object.  This is a bit crude, but at least it is
a localised hack.
ghc/rts/GC.c