$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Emil Dotchevski (emildotchevski_at_[hidden])
Date: 2020-05-30 15:19:25
On Sat, May 30, 2020 at 7:43 AM Bjorn Reese via Boost <boost_at_[hidden]>
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.