[Gc] Re: Problems with GC_size_map
Juan Jose Garcia-Ripoll
juanjose.garciaripoll at googlemail.com
Mon Feb 1 15:51:02 PST 2010
On Tue, Feb 2, 2010 at 12:19 AM, Ludovic Courtès <ludo at gnu.org> wrote:
> In GNU Guile we use a custom mark procedure to achieve this, as was
> suggested by... you. :-)
Actually, when I mentioned that I meant the GC_push_other_roots technique,
not a custom mark procedure for the stack data type -- which seems more
clever by the way: if the garbage collector is capable of recognizing that
the stack has not changed then it should not mark it.
Regarding mis-identification, you are probably correct for the main stack,
but I have other stacks which are full of actual integers, not lsb-tagged
ones, as it is used in lisp interpreters.
In general I am worried that the garbage collector is performing rather bad
for a simple problem in which one builds and quickly discarding bignums --
pointerless memory, by the way --. Profiling shows that 80% of the time is
spent in the mark phase. This behavior is only present in 32-bits platforms.
For 64-bit linuxes and OS X, garbage collection times are reduced by a
factor of 3-4 and everything works smoothly, as in the best Common Lisp
implementations around. I am intuitively associating it to blacklisting and
false roots, which is why I am looking for more precise methods for
scanning, allocating memory, etc.
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Gc