guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GC rewrite, first version.


From: Han-Wen
Subject: GC rewrite, first version.
Date: Sun, 28 Jul 2002 00:54:19 +0200

I've just finished a first version of the rewrite of the garbage
collector. You can download it from

  http://www.cs.uu.nl/~hanwen/public/guile/gc-rewrite-0.0.tar.gz

Some general notes:

* I've split gc.c in a lot of files, and a private header file. The
  formerly static functions are now exported, but with the scm_ prefix

  I think the prefix scm_i_ is utterly unreadable.  I decided against
  using it.  The header file is not `exported' so that should make it
  clear that the structures are internal.

* Clusters have been removed. We already had cards as a unit of
  memory; for MT applications, we can hand out a few free cards for
  each thread.

* The code has been cleaned up *a lot*. I think that the code is
  almost readable now (except for the actual sweep & mark functions, I
  didn't touch those.).

* I've removed a lot of cruft.  (gc.c still  contained verbatim
  fragments of SCM portability glue -- Ick!)

* I've also removed part of the header file. I think that GUILE client
  programs should not have anything to do with how GC works, but if
  someone desparately needs a symbol back, it could be done.

* I've tried to retain the basic interface of the GC (wrt statistics
  and mtriggers), but I'm not sure that I succeeded, there is a lot of
  undocumented stuff going on there.

* The debugging options are still broken; it is not clear to me for
  whom these options are, and I only want to put them back when it's
  clear what the final form of the GC will be, and when there is a
  need.

* Some preliminary benchmarks show that the code is about 2 to 10 %
  slower than the old GC. I suspect this is because the cards are
  relatively small, causing more overhead during the sweep.

* Next target: try to beat the old GC using lazy sweeping. (When this
  target is met, I think the code should replace the old GC in CVS
  guile).

[And yes, I don't care much for the compatibility. Especially not in
this hacking stage, and especially not for the internals of the GC.]


-- 

Han-Wen Nienhuys   |   address@hidden   |   http://www.cs.uu.nl/~hanwen 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]