On Wednesday, 9 April 2014 at 08:24:55 UTC, Mike wrote:
On Tuesday, 8 April 2014 at 14:59:35 UTC, Artur Skawina wrote:
'memcoy' being a built-in compiler intrinsic means that when the compiler sees a 'memcpy' call, it does some checks (eg is the length statically known and small enough?) and then can generated the copy instructions
directly, instead of calling the lib function.

Then it could do such magic in the _d_arraycopy function where the call to memcpy exists. I'm still not seeing the motivation behind putting this call to memcpy in Phobos.

Depending on the type being copied, "a[] = b[]" is not straight up "memory copy" it's the actual full assignment, with postblit and all. That's why the call we want is *really* memcpy.

The code where you saw this, if I'm not mistaken, is "inPlaceInsert" or something of the like. The idea in this code is to actually *move* the data, not create *copies* elsewhere.

The array assign is a fallback for CTFE. It's fine in CTFE, because we don't care about performance, but it's not the actual call we want.

Reply via email to