c++11 enum syntax ok in DMD headers ?
Iain Buclaw
ibuclaw at gdcproject.org
Sat Nov 23 14:09:45 UTC 2019
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Saturday, 23 November 2019 13:54, S.G via D.gnu <d.gnu at puremagic.com> wrote:
> Thanks for the quick replying, even if a bit disapointing.
>
> The reason why I asked is because I'd like to avoid cases where
> the enum type is used directly and that creates an alignment
> issue that implies memory overhead, i.e
>
> enum SomeEnumeratedType // could be `ubyte` or `unsigned char`
> {
> member1, member2, member3
> }
>
> class Stuff
> {
> ubyte[7] allTheOtherMembers; //let's say
> SomeEnumeratedType someEnumeratedType // now a Stuff instance
> takes 16 bytes
> // because
> SomeEnumeratedType takes 4 bytes...
> }
Understood, however for AST data structures in the D language frontend, I don't think such field packing would really make any valuable difference on memory. If the fields are arranged to not have a needless amount of alignment holes in the middle, such as:
class Expression
{
ubyte op;
// <-- up to 7 bytes padding inserted here.
Type* type;
ubyte size;
ubyte parens;
// <-- up to 6 bytes padding inserted here.
Loc loc;
}
Then the best improvements one can make would be in relation to memory consumption is either better GC management or add more scope destruction (in my opinion).
--
Iain
More information about the D.gnu
mailing list