[MLton] share bug

Stephen Weeks MLton@mlton.org
Tue, 18 Apr 2006 20:50:30 -0700


> Ah, got it.  The point is to always set marks on any thing returned
> because the thing it is being aliased to might have a marked card,
> correct?

The point is to mark a card if we create an intergenerational pointer,
that is, a pointer from the old generation to the nursery.  Hence the
test 

   isInOldGen (s, (pointer)pp) and isInNursery (s, *pp))

> If that is what it is doing, then how much GC activity has to happen
> before the mark gets cleared (assuming I am understanding any of
> this?)?

The next minor GC moves all of the nursery into the old generation,
and clears all marks.