How to force an array literal into a read-only data segment?

Max Samukha maxsamukha at gmail.com
Thu Sep 12 09:40:51 UTC 2019


On Thursday, 12 September 2019 at 08:54:09 UTC, a11e99z wrote:
> On Thursday, 12 September 2019 at 07:04:19 UTC, Max Samukha 
> wrote:
>>
>> How to achieve the same for an array literal? The closest I 
>> could come:
>>
>> enum immutable(int[3]) _tmp = [1, 2, 3];
>> __gshared a = _tmp.ptr;
>>
>> Is it possible to force the array into rodata?
>
> https://p0nce.github.io/d-idioms/#Precomputed-tables-at-compile-time-through-CTFE
>
> static immutable(int[3]) _tmp = [1, 2, 3];
> ?

That looks the same as my example, where 'static' is redundant at 
the module level, and enum just removes the unneeded reference to 
the temporary from the object file. However, __gshared in my 
example does seem to be redundant - 'immutable' implies 
thread-shared in this case.


More information about the Digitalmars-d-learn mailing list