On Sunday, 27 June 2021 at 08:41:27 UTC, kinke wrote:
>On Sunday, 27 June 2021 at 07:54:38 UTC, Ola Fosheim Grøstad wrote: [AFAIK, most C++ implementations put the - of course totally incompatible - C++ TypeInfo into vtable slot -1.]
Actually my understanding is that it's part of the ABI:
>Each virtual table address in the VTT is the address to be assigned to the respective virtual pointer, i.e. the address past the end of the typeinfo pointer (the address of the first virtual function pointer, if there are any), not of the first vcall offset.
Source: Itanium ABI, 2.6.2 VTT Order
Regarding replacing D's ABI with C++, it might be possible today, but:
- It takes someone to care about it and want it;
- It's going to be a lot of work, so it should come with lots of benefit - I don't see much as of now;
- It locks us in a position where we depend on an external committee / implementation to define our ABI.
In any case, if you feel like it's worth it @Ola, you could start to look into what it takes (druntime/dmd wise) and start to submit PR. For dlang devs questions, I recommend to use the dlang slack.