Antti-Ville Tuuainen Passes GSoC Final Evaluation

renoX renozyx at gmail.com
Fri Aug 24 00:07:03 PDT 2012


On Thursday, 23 August 2012 at 14:38:19 UTC, Alex Rønne Petersen 
wrote:
> 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.

Funny coincidence, I've just read an interview from Narihiro 
Nakamura who is working on parallel marking in Ruby: 
http://rubysource.com/narihiro-nakamura-rubys-gc-innovator/

BR,
renoX




More information about the Digitalmars-d-announce mailing list