Implementing Alternative Garbage Collector

Brandon Ragland via Digitalmars-d digitalmars-d at puremagic.com
Thu Sep 3 06:50:40 PDT 2015


On Thursday, 3 September 2015 at 06:36:17 UTC, Jacob Carlborg 
wrote:
> On 2015-09-02 22:13, Brandon Ragland wrote:
>> On Wednesday, 2 September 2015 at 18:25:11 UTC, Jacob Carlborg 
>> wrote:
>>> [1]
>>> https://github.com/D-Programming-Language/druntime/blob/master/src/gcstub/gc.d
>>>
>>
>> While that may be true, if the purpose was to ensure tracking 
>> and
>> collection of objects / arrays created with the new 
>> expression, how
>> would one do that without knowledge of the actual 
>> implementation and the
>> interface?
>>
>> Same would go for slicing operations, which would be difficult 
>> to track.
>>
>> You'd have to pass a pointer to that new object onto the 
>> custom GC, or
>> it will never see it. Quick way to have huge memory leaks...
>
> I'm not sure I understand you're reply. You asked for the 
> interface to the GC, as far as I know the above link contains 
> the interface for the GC. That is, all the extern (C) functions.
>
> As far as the "new" expression, technically it has nothing to 
> do with the GC. The "new" expression is lowered to a call to 
> "_d_newclass" [1], which in the current implementation then 
> calls the GC.
>
> I recommend you having a look in the "rt" package.
>
> [1] 
> https://github.com/D-Programming-Language/druntime/blob/master/src/rt/lifetime.d#L71

That links answers many questions.

To be honest, I don't truly understand how D uses the GC or it's 
interface, which is part of the reason why I want to attempt to 
link one myself. It's for learning purposes, which could help 
shed some light on the GC usefulness in D (for myself of-course)

I appreciate the link to RT, that actually explains a lot. I see 
multiple places where the GC is called in RT, which helps explain 
the Proxy GC struct, and how that is being used as the interface 
to the actual GC.

The Stub GC you linked earlier is helpful to a degree, and where 
I will start.




More information about the Digitalmars-d mailing list