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