On Mon, 1 Jul 2002, Tim Peters wrote:
I checked in a surprisingly large patch to change the way we collect a generation. [...] The point was that almost everything is reachable in the end, and moving an object between lists costs six pointer stores (updating prev and next pointers in the object, and in each of the two lists). So if most stuff is doomed to be reachable in the end, better to move the unreachable stuff than to move the reachable stuff. [...] It would be nicer if we could drive scanned there down to 0 <wink>.
This change may be a short-term win if I can get Jeremy's idea working. It involves temporarily untracking objects with known external roots, so many more objects become unreachable. These include objects stored on the c-eval stack, local variables in the current frame, and possibly other select places.
I have no idea if this approach will make enough of a difference to be worthwhile, but it seems like a worthy experiment.
-- Kevin Jacobs The OPAL Group - Enterprise Systems Architect Voice: (216) 986-0710 x 19 E-mail: firstname.lastname@example.org Fax: (216) 986-0714 WWW: http://www.theopalgroup.com