LDC 1.18.0-beta1

Ivan Butygin ivan.butygin at gmail.com
Tue Sep 24 19:40:28 UTC 2019


On Tuesday, 24 September 2019 at 19:17:25 UTC, jmh530 wrote:
> On Tuesday, 24 September 2019 at 18:24:36 UTC, Ivan Butygin 
> wrote:
>> On Tuesday, 24 September 2019 at 17:49:13 UTC, jmh530 wrote:
>>>
>>
>> About bind call overhead, bind object hold pointer to shared 
>> payload, which is allocated via malloc. This payload has 
>> function pointer (initially null).
>> During compileDynamicCode call runtime will update this 
>> pointer to generated code.
>> Bind object opCall call this function pointer from payload.
>>
>> [snip]
>
> That's very helpful. The bind stuff is making a little more 
> sense to me now.
>
> Is there a concern that ldc cannot inline these function 
> pointers versus the normal function calls?

We probably can't do anything with static->jit calls overhead. 
Just try to jit big enough functions to make this overhead 
negligible. But jit->static calls will be optimized. When 
compiler sees call to other function in jitted code and function 
body is available it will try to pull this function to jitted 
code as well even if it isn't marked 
@dynamicCompile/@dynamicCompileEmit. Static calls to such 
functions will still use static version but jit will use its own 
version which can be optimized with rest of jitted code and can 
be inlined into jitted code.


More information about the Digitalmars-d-announce mailing list