0.8.7.3
authorDaniel Barlow <dan@telent.net>
Thu, 1 Jan 2004 22:02:49 +0000 (22:02 +0000)
committerDaniel Barlow <dan@telent.net>
Thu, 1 Jan 2004 22:02:49 +0000 (22:02 +0000)
commit582503547d172f95aaf118311f09fe6828a6ea72
treea93844d039c490fe1e2c08383af090290f012f2c
parent020de3c04699323437f0c746fe986506b716ab97
0.8.7.3
Some essential-for-my-comprehension purify and gencgc
refactoring.  Some functional changes too, though none that
seem to make any difference in practice

Ripped out vast swathes of "is this a large object" checking
in gencgc's allocation routines.  Now the only criterion for
whether an object is handled as a large object is whether its
size exceeds the large object threshold.

Fixed bug in gc_find_freeish_pages that was causing lots of
fragmentation: allocation regions for small objects may now
start on the same page as previously closed regions with the
same characteristics

Fixed rarely-observed bug in gencgc_pickup_dynamic so that it
doesn't create a single xMb region from the whole of dynamic
space when a core is loaded, instead splitting the space into
as many regions as it can (this may be related to bug 95,
though I don't /really/ want to claim I fixed that until I see
better what the problem is there).  Unless you save unpurified
cores you're unlikely to be bitten by this often.

New newspace_alloc routine in purify.c makes it all a bit
easier to see what's going on there.

Replace all hand-coded memory-copying loops with memcpy(); the
compiler should be able to optimize this better than we can
(actually makes no difference that I can detect to execution
time, but the code is now shorter)
BUGS
doc/beyond-ansi.xml
src/runtime/gc-common.c
src/runtime/gc-internal.h
src/runtime/gencgc-internal.h
src/runtime/gencgc.c
src/runtime/purify.c
version.lisp-expr