C++ Logo

std-proposals

Advanced search

Re: [std-proposals] Optimize away VTBL when using single inheritance

From: Gašper Ažman <gasper.azman_at_[hidden]>
Date: Fri, 10 Nov 2023 02:50:35 +0000
this is called devirtualization and it is a thing.

https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html , look for
"devirtualize"

On Fri, Nov 10, 2023 at 1:51 AM Sebastian Wittmeier via Std-Proposals <
std-proposals_at_[hidden]> wrote:

> So the VTBL would still exist, but for some order od operations (here:
> Create + someVirtualFunc()) the indirection could/would be optimized out?
> As the class behind the interface is known from the Create function in this
> case?
>
>
> -----Ursprüngliche Nachricht-----
> *Von:* Breno Guimarães via Std-Proposals <std-proposals_at_[hidden]>
> *Gesendet:* Fr 10.11.2023 02:37
> *Betreff:* Re: [std-proposals] Optimize away VTBL when using single
> inheritance
> *An:* Std-Proposals <std-proposals_at_[hidden]>;
> *CC:* Breno Guimarães <brenorg_at_[hidden]>;
> Hi,
>
> Perhaps this should be directed a compiler vendor then?
>
> Best Regards,
> Breno G
>
> Em qui., 9 de nov. de 2023 22:22, Smith, Jim via Std-Proposals <
> std-proposals_at_[hidden]> escreveu:
>
> Hi All,
>
> Test-driven development (TDD) is my de facto standard for writing
> software. On some projects I can't use TDD because interfaces introduce
> VTBL operation into the code. For me this is a serious issue.
>
> I've always used C++ interfaces i.e., classes with all pure virtual
> functions for TDD, especially when implementing a design patterns like
> Factory.
>
> I'm proposing a compiler option that will turn a virtual call through an
> interface, to a direct call on the object. For example,
>
> interface* i = Factory::Create();
>
> i->someVirtualFunc();
>
> In cases where single inheritance is used i->someVirtualFunc() would be
> optimized to a direct call on the object without any VTBL operation.
>
> This way the TDD code can use the standard VTBL operations, and in
> production builds a flag can be set to optimize it away. I can't do this
> myself without mentioning the concrete type created by the factory but the
> compiler can make the optimization.
>
>
> --James S.
>
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>

Received on 2023-11-10 02:50:48