On Fri, 30 Jul 2010 16:31:49 -0400, Jonathan M Davis <jmdavisp...@gmail.com> wrote:

On Friday, July 30, 2010 13:10:46 Steven Schveighoffer wrote:

It's not. The only runtime functions available to the compiler look like
this:

_d_newarrayT(TypeInfo ti, size_t length);

I guess that's one thing that comes of not really implementing it as a
primitive. If there are enough such functions that would be properly optimizable had they actually been implemented as primitives, I would think that there would be some merit in finding a way to get the compiler to understand that it can do such optimizations. But I really don't know how all that works in dmd, so I have
no idea how feasible that is.

To be clear, the compiler could do the optimization if it had another runtime function to call. But since there is *no* runtime function that allocates a new array and initializes it with a custom initial element, how do you make a primitive?

So if the function exists, the compiler can be fixed to make the sequence of "create then assign" a primitive, but I think just a runtime function is good enough, and will work without compiler changes.

-Steve

Reply via email to