|
Boost : |
From: Emil Dotchevski (emildotchevski_at_[hidden])
Date: 2020-06-02 18:27:02
On Tue, Jun 2, 2020 at 2:32 AM Alexander Grund via Boost <
boost_at_[hidden]> wrote:
> > By "generally no" I meant that the work is mostly limited to try_catch.
> > <deleted details>
> Doesn't this state the opposite of "generally, no" or am I missing
anything?
The happy path includes everything that happens when there is no exception
thrown, not only what happens at the try...catch, that's what I meant.
> So I think the request for a comparison of the happy cases for LEAF and
> exceptions is justified.
A benchmark can be added, sure. Here's the initialization code generated by
leaf::try_catch that deals with a context that has a struct e_info { int
value; }:
mov dword ptr [rsp + 8], 0
mov rax, qword ptr fs:[0]
lea rax, [rax + boost::leaf::leaf_detail::slot<e_info>*&
boost::leaf::leaf_detail::tl_slot_ptr<e_info>()::s_at_TPOFF]
mov qword ptr [rsp + 16], rax
mov rax, qword ptr fs:[boost::leaf::leaf_detail::slot<e_info>*&
boost::leaf::leaf_detail::tl_slot_ptr<e_info>()::s_at_TPOFF]
mov qword ptr [rsp + 24], rax
lea rax, [rsp + 8]
mov qword ptr fs:[boost::leaf::leaf_detail::slot<e_info>*&
boost::leaf::leaf_detail::tl_slot_ptr<e_info>()::s_at_TPOFF], rax
This initialization does not depend on the type of ::value. The long gnarly
names are TLS offset constants.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk