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