1.0.38.4: Scrub control stack after scavenging on non-x86oid gencgc.
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Fri, 30 Apr 2010 16:53:16 +0000 (16:53 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Fri, 30 Apr 2010 16:53:16 +0000 (16:53 +0000)
commit87d8bad92787a7d5d51d1cb49b4306b8425154dc
treeb09b78bb5ad94c3f0281957187c6cbd9c135c62c
parent8ac6ab97a44925953f4f7c29341d365da3be33ae
1.0.38.4: Scrub control stack after scavenging on non-x86oid gencgc.

  * We scavenge the control stack as if it is entirely boxed data,
rewriting pointers as necessary.

  * Stack frames tend to contain uninitialized words, which is fine so
long as they are immediate data or valid pointers (they will be
counted as live data, so the scavenge may be more conservative than
necessary, but this is not an error).

  * The area beyond the current stack top is not scavenged, as it is not
live data.

  * Cheneygc scrubs the control stack (clears the area beyond the stack
top) once it (the control stack) has been scavenged.

  * Gencgc on non-x86oids (when precise stack scavenging is done) has
not been scrubbing the control stack, leading to the possibility of
having stale pointers in the active heap area.

  * Scrubbing the control stack after scavenging it reduces if not
eliminates the random GC faults observed on PPC.

  * All of this explanation probably belongs in a document describing
the hows and whys of GC on SBCL, not merely in a commit message.
NEWS
src/runtime/gencgc.c
version.lisp-expr