SAOC Experience Report: Porting a fork-based GC

rikki cattermole rikki at cattermole.co.nz
Mon Jul 22 16:52:08 UTC 2019


On 23/07/2019 3:58 AM, a11e99z wrote:
> On Monday, 22 July 2019 at 14:03:15 UTC, Mike Parker wrote:
>> Francesco Mecca ha written an experience report for the D Blog about 
>> his SAOC 2018 project, porting Leandro Lucarella's old GC from D1 to D2.
>>
>> The blog:
>> https://dlang.org/blog/wp-admin/post.php?post=2148&action=edit
>>
>> Reddit:
>> https://www.reddit.com/r/programming/comments/cgdk1r/symmetry_autumn_of_code_experience_report_porting/ 
>>
> 
> interesting idea do Mark phase through fork process.
> 
> I want more technical details:
> - about Windows: will such idea work on Windows? does Windows support 
> similar technique? (VirtualQueryEx/ReadProcessMemory/mmap/or_something)

The problem with Windows is not so much reading another process memory, 
is the fact that you cannot create another process which is copied from 
your own memory space AND be able to have live threads running in it.

What we can do (which will be good for things like audio and game 
engines) is make the GC only suspend the current thread and read from a 
snapshot of the heap space of the process. This we can do.

Unfortunately I remembered that marking is a bit more complex than just 
locating memory a bit too late tonight. No wonder I never tried before 
now to implement this (I have evaluated it).

I may have another try at it, if somebody can give me pointers on where 
the actual reading occurs in the GC. Because it has left me a bit stumped.


More information about the Digitalmars-d-announce mailing list