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