gencgc: More precise conservatism for pointers to boxed pages.
authorAlastair Bridgewater <nyef@kana.lisphacker.com>
Tue, 31 Dec 2013 16:27:18 +0000 (11:27 -0500)
committerAlastair Bridgewater <nyef@kana.lisphacker.com>
Tue, 31 Dec 2013 17:23:39 +0000 (12:23 -0500)
commit0e3c4b4db102bd204a30402d7e5a0de44aea57ce
tree12c5322832911b629fc4f7a7703bb85a55624541
parentb27852e74e11ccc9808305a73d815a4a67d77963
gencgc: More precise conservatism for pointers to boxed pages.

  * The commentary for possibly_valid_dynamic_space_pointer()
claims that it matches unboxed return addresses (to within code
objects), but this turns out not to be the case.

  * Fix the code to match the comment, at least somewhat, by
checking to see if the object found is a code object and
shortcutting the full validation if it is.

  * And, now that we have a version of p_v_d_s_p() that does the
"right thing", or at least close to it with respect to the only
truly unboxed interior pointers that we should have to deal with,
call it straight up instead of only for unboxed pages when we have
a true pointer type.

  * Overall, this can be expected to be slower than the prior
version, but more precise in terms of rogue integers in the heap
range.  The remaining conservation effects would be due to the
fact that we can't move ANYTHING that's a conservative root and
stale pointers within our active area (truly precise ports are
less affected by this because they can relocate objects pointed to
by stale pointers).
NEWS
src/runtime/gencgc.c