Fiber implementation questions

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 21 09:12:13 PDT 2016


On 6/21/16 11:43 AM, Dicebot wrote:
> On Tuesday, 21 June 2016 at 12:18:37 UTC, Steven Schveighoffer wrote:
>> On 6/21/16 6:14 AM, Dicebot wrote:
>>> On 06/20/2016 11:17 PM, deadalnix wrote:
>>>>> Q2: core.thread.Fiber implementation looks like GC does not scan
>>>>> function stacks for yielded contexts. Why?
>>>>>
>>>>
>>>> Doesn't it ?
>>>
>>> https://github.com/dlang/druntime/blob/master/src/core/thread.d#L4328
>>> allocates fiber stack using mmap / malloc / VirtualAlloc and doesn't
>>> seem to register that memory in GC. But that may be indirect result of
>>> https://github.com/dlang/druntime/blob/master/src/core/thread.d#L4439
>>> call, which is why I am not sure.
>>
>> It appears that Fibers interact with the GC differently:
>>
>> https://github.com/dlang/druntime/blob/master/src/core/thread.d#L1611
>>
>
> I suspected something like this, it explains a lot. Do you know why this
> approach was chosen instead of simply registering allocated memory for
> GC scan? Does GC has special approach for stack scanning which differs
> from normal memory?

There must be a reason, I think maybe Martin or Sean would know more.

-Steve


More information about the Digitalmars-d mailing list