Antti-Ville Tuuainen Passes GSoC Final Evaluation

Leandro Lucarella luca at llucax.com.ar
Thu Aug 23 14:33:06 PDT 2012


Alex Rønne Petersen, el 23 de August a las 16:38 me escribiste:
> On 23-08-2012 15:21, Rory McGuire wrote:
> >On Thu, Aug 23, 2012 at 2:51 PM, dsimcha <dsimcha at yahoo.com
> ><mailto:dsimcha at yahoo.com>> wrote:
> >
> >    Basically, the idea is to store information about what is and isn't
> >    a pointer at the pool level instead of at the block level.  My
> >    attempt from a long time ago at precise heap scanning, and
> >    Antti-Ville's first attempt, stored meta-data at the end of every
> >    allocated block.  This worked well for large arrays, but was
> >    terribly inefficient for smaller allocations and made the GC code
> >    even messier than it already is.  The overhead was a fixed
> >    (void*).sizeof bits per block.  Now, each pool has a bit array that
> >    contains one bit for every possible aligned pointer.  The overhead
> >    is always 1 bit for every (void*).sizeof bytes no matter how large
> >    or small the block is.
> >
> >
> >Am I correct in thinking that this is still single threaded stop the world?
>
> Yes, but parallelization of the mark phase is fairly trivial, and
> something we should probably look into.
>
> The GC will probably always be STW unless we get compiler support
> for inserting GC barriers.

Feel free to use my work[1] to have a cloning collector which is not STW
in the classical sense (it just STW for the time it takes to pause the
threads and fork() the process), at least on *nixes. Works fairly
well[2], even in production code. There's is only one issue[3], but
a nasty one, because of a glibc internal lock shared between fork() and
other glibc functions like malloc and the GC using signals to interrupt
the threads. I hope I can fix this problem eventually (the ideal for me
would be to find another way to pause the threads).

[1] http://www.dsource.org/projects/tango/browser/trunk/tango/core/rt/gc/cdgc
[2] http://www.llucax.com.ar/blog/blog/post/-1a4bdfba
[3] http://www.dsource.org/projects/tango/ticket/2087

--
Leandro Lucarella (AKA luca)                     http://llucax.com.ar/
----------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------
Si por el chancho fuera, se autocomería con chimichurri Worshestershire!


More information about the Digitalmars-d-announce mailing list