This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Another new gc



Ok, there's yet another gc up at my website. This is basically guile's
current gc with the object marks moved from the object into separate
heap cells (chunklets). From the readme:

Features:

* Removes the need for separate GC & GC8 marks for different objects

* Faster than the current gc in `fair' tests (where the semantics of
  expmem are fixed, so that the current gc doesn't keep allocating
  huge amounts of space).

Possible incompatibilities:

* Removes the ability to create heap cells with ncells > 1

* Removes the expmem bits (may be reintroduced).

* Removes the usage of the second word of a struct as a gc mark.

It is slower (overall) than the gc as distributed with guile (since
currently expmem does not behave correctly; heap segments continue to
grow by 2*scm_heap_size every time they're allocated), but, even in
this case, each pause for each individual gc will be shorter. When the
current gc behaves `correctly' (expmem only kicks in when you couldn't
allocate the initial desired heap size), this gc wins.

The tarball is at
http://home.thezone.net/~gharvey/guile/guilegc.tar.gz

This includes a patch against the current cvs sources, as well as new
gc.c and gc.h files (enough has changed that a diff for these doesn't
make sense). It doesn't support the 1.3 release (this isn't difficult
to fix if you really want it).

-- 
Greg