Keep the std::exception* or std::type_info* in folly::exception_wrapper
Summary: [Folly] Keep the `std::exception*` or `std::type_info*` in `folly::exception_wrapper`. In the case of construction with a `std::exception_ptr`. Instead of keeping a pair of `std::string`s, strictly losing information (not that we use any more information, but theoretically we could). Of note: * Shrinks the size of `folly::exception_wrapper`, in all cases, to 48 bytes. Down from 32 bytes + 2 S bytes on 64-bit architectures, where S is the size in bytes of `std::string`. In particular, `libstdc++`'s implementation is 32 bytes, while `libc++`'s and Folly's implementations are 24 bytes on 64-bit architectures, for total original sizes of 96 bytes or 80 bytes. * Allows to avoid rethrowing in `with_exception` in the case of an instance constructed with an `std::exception_ptr` plus an `std::exception&`. Reviewed By: ericniebler Differential Revision: D4369935 fbshipit-source-id: 35155e0b271959a4878fe077fc911b17767a2358
Showing
Please register or sign in to comment