On Sat, May 30, 2020 at 7:43 AM Bjorn Reese via Boost <boost@lists.boost.org> wrote:
On 2020-05-22 21:30, Emil Dotchevski via Boost wrote:
- Does LEAF incur any memory or runtime performance overhead in the non-error case? If so what is the impact of this when compared to the itanium zero-cost exception handling ABI?
Generally, no.
Can you elaborate on this with regards to runtime performance?
In the successful case, the runtime overhead of C++ try-catch blocks is a jump over the catch block.
By "generally no" I meant that the work is mostly limited to try_catch. In more details, on the happy path:: - At try_catch: a local tuple<slot<E>...> is initialized, where E... is basically the argument types of all the error handlers, with duplicates removed. Each slot<E> zeroes an int, and a TLS pointer for each of E... is set to point the corresponding slot<E>... . When exiting the try_catch, this is undone. - Things like preload cache all their arguments locally, by moving, later to be discarded if no error has occurred.