On 7/30/2019 4:40 PM, Mike Hommey wrote:
On Tue, Jul 30, 2019 at 01:04:56PM -0400, Nathan Froyd wrote:
On Sat, Jul 27, 2019 at 1:42 PM Botond Ballo <bba...@mozilla.com> wrote:
If you're interested in some more details about what happened at last
week's meeting, my blog post about it is now available (also on
Planet):

https://botondballo.wordpress.com/2019/07/26/trip-report-c-standards-meeting-in-cologne-july-2019/
Thanks for writing this up.  I always enjoy reading these reports.

One grotty low-level question about the new exception proposal.  Your
post states:

"it was observed that since we need to revise the calling convention
as part of this proposal anyways, perhaps we could take the
opportunity to make other improvements to it as well, such as allowing
small objects to be passed in registers, the lack of which is a pretty
unfortunate performance problem today (certainly one we’ve run into at
Mozilla multiple times). That seems intriguing."

How is revising the calling convention a C++ standards committee
issue?  Doesn't that properly belong to the underlying platform (CPU
and/or OS)?
... and aren't small objects already passed via registers already?

I wasn't at the meeting, so I can't say for sure, but I imagine the issue being talked about is the fact that structs/classes need to have a *this parameter (most notably for non-trivial constructors and destructors), which precludes being able to stick them in registers when those kick in. Watch what happens if you return a std::tuple for example: https://gcc.godbolt.org/z/CfbGvq (I would love to have real multiple return values in C++, but std::tuple still causes stack allocation for the return value).

--
Joshua Cranmer
Thunderbird and DXR developer
Source code archæologist

_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to