Does dmd have SSE intrinsics?
Robert Jacques
sandford at jhu.edu
Tue Sep 22 17:02:26 PDT 2009
On Tue, 22 Sep 2009 18:56:12 -0400, Christopher Wright
<dhasenan at gmail.com> wrote:
> Robert Jacques wrote:
>> Yes, although classes have hidden vars, which are runtime dependent,
>> changing the offset. Structs may be embedded in other things (therefore
>> offset). And then there's the whole slicing from an array issue.
>
> Um, no. Field accesses for class variables are (pointer + offset).
> Successive subclasses append their fields to the object, so if you
> sliced an object and changed its vtbl pointer, you could get a valid
> instance of its superclass.
>
> If the class layout weren't determined at compile time, field accesses
> would be as slow as virtual function calls.
Clarification: I meant slicing an array of value types. i.e. if the size
of the value type isn't a multiple of 16, then the alignment will change.
(i.e. float3[])
As for classes, yes the compiler knows, but the point is that you don't
know the size and therefore alignment of your super-class. Worse, it could
change with different run-times or OSes. So trying to manually align
things by introducing spacing vars, etc. is both hard, error-prone and
non-portable.
More information about the Digitalmars-d
mailing list