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>
>> 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.
Research and development
Spectrum Net JSC
36, D-r G. M. Dimitrov Blvd.
Mobile: +359 884332140
More information about the parrot-dev