On Wed, 29 Sep 2010 19:06:52 +1000, Vasily Chekalkin <[email protected]>
wrote:
> On Tue, Sep 28, 2010 at 11:29 PM, Luben Karavelov
> <[email protected]> wrote:
>> On Tue, 28 Sep 2010 14:52:12 +1000, Vasily Chekalkin <[email protected]>
>> 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

_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev

Reply via email to