Getting tls symbols out of the compiler.
Iain Buclaw
ibuclaw at ubuntu.com
Thu May 30 03:37:42 PDT 2013
On 30 May 2013 11:13, Johannes Pfau <nospam at example.com> wrote:
> Am Thu, 30 May 2013 10:42:17 +0100
> schrieb Iain Buclaw <ibuclaw at ubuntu.com>:
>
>>
>> This is more of a lazy init that won't affect start-up speed. Note:
>> this idea is based off what C++ (g++) does for say - static A a = new
>> A();
>>
>
> I see.
>
>>
>> I don't think it would have much slow down. Albeit the first
>> initialisation would jump through the druntime library twice, but
>> there after it's a single/two instruction test. Pretty negligible -
>> but I'm not a speeeeeeeeed demon or freak who wants everything
>> compiled with -fOMG-fast. =)
>
> I'm more worried about adding many roots to the GC. The code which
> checks the guard variable is probably neglectable.
>
Speed won't at all be a problem in that aspect. All roots are kept in
an array, so during collection, rather than the following:
---
mark (&_tlsstart, &_tlsend - &_tlsstart);
---
It will be doing:
---
mark (this.roots, this.roots + this.nroots);
---
Regards
--
Iain Buclaw
*(p < e ? p++ : p) = (c & 0x0f) + '0';
More information about the D.gnu
mailing list