gc_ms2_tuning branch

Luben Karavelov karavelov at spnet.net
Wed Sep 29 15:17:17 UTC 2010

On Wed, 29 Sep 2010 19:06:52 +1000, Vasily Chekalkin <bacek at bacek.com>
> On Tue, Sep 28, 2010 at 11:29 PM, Luben Karavelov
> <karavelov at spnet.net> wrote:
>> On Tue, 28 Sep 2010 14:52:12 +1000, Vasily Chekalkin <bacek at bacek.com>
>> wrote:
>> If we have 3 generations (as I understand the work done by vassily)
>> can't we have:
>> a. 1 array for ancient generation
>> b. 1 array for old generation
>> c. 1 array for new generation  (if we need it)
>> d. 1 array that holds objects from old and ancient generations that
>>   were modified since last GC run.
> It is exactly what I have in gen_gc branch. But implemented using
> linked lists, not arrays.
> What about old-to-young pointers? After we move some aggregate object
> into older generation we have to:
> 1. Move all dependant objects into same generation (as currently in
> gen_gc branch).
> 2. After handling write_barrier call either move it back to young
> generation (as in branch) or move all dependant objects into old one
> (which is doable).

May be it could sit in the temporary exception list that holds objects 
("d" in the above scheme) until all aggregated objects are moved in
the same generation, but this will make movement to older generation 
a lot more complicated.

Luben Karavelov
Research and development
Spectrum Net JSC

36, D-r G. M. Dimitrov Blvd.
1797 Sofia
Mobile: +359 884332140
url: www.spnet.net

More information about the parrot-dev mailing list