[OT] Previously: DMD - Windows -> C# in gamedev

Manu turkeyman at gmail.com
Sat Jan 7 15:06:56 PST 2012


On 7 January 2012 20:59, bearophile <bearophileHUGS at lycos.com> wrote:

> Manu:
>
> > The tendency to encourage use of dynamic arrays will be a major problem.
>
> I don't know how much big that problem will be, D dynamic arrays are quite
> handy, but I agree that static arrays need to be encouraged more in D (and
> currently most algorithms of Phobos don't work with static arrays (you need
> to slice them first)).
>

A slice doesn't produce a GC allocation does it?
I thought a slice was just a pointer-length pair. Should live on the
stack/in regs?

...so slicing static arrays shouldn't be a problem right?


> Currently even this code with a stack-allocated fixed size array causes a
> heap allocation (DMD):
>
> void main() {
>    int[2] a = [1, 2];
> }
>
> ASM, optimized build:
>
> __Dmain comdat
>    push EAX
>    push EAX
>    mov EAX,offset FLAT:_D12TypeInfo_xAi6__initZ
>    push EBX
>    push 8
>    push 2
>    push EAX
>    call near ptr __d_arrayliteralTX ; heap allocation
>    add ESP,8
>    mov EBX,EAX
>    mov dword ptr [EAX],1
>    mov ECX,EBX
>    push EBX
>    lea EDX,0Ch[ESP]
>    mov dword ptr 4[EBX],2
>    push EDX
>    call near ptr _memcpy
>    add ESP,0Ch
>    xor EAX,EAX
>    pop EBX
>    add ESP,8
>    ret
>

What the hell is it allocating?
Surely that's not necessary... that's gotta be fixable?


> I have suggested to add a safer version of VLAs to avoid some
> heap-allocated dynamic arrays:
> http://d.puremagic.com/issues/show_bug.cgi?id=5348


+1!!
I'm surprised this already isn't supported!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20120108/4e8fe7d8/attachment.html>


More information about the Digitalmars-d mailing list