Tags: libhal/libhal-exceptions
Tags
⚡ (patch) Fix inaccuracies in nearpoint (#97) - Remove unwind code from nearpoint function group calculation - Discard unwind code used by GCC in `arm-none-eabi-gcc-14.2_discard.ld` - Improve left/right scan of entries in nearpoint search :alembic: Add fast gcc to benchmark Fast GCC, is just builtin GCC exceptions except I replace some of the function with my own versions. Mostly just added always inline along with some performance improvements from my talk.
⚡ (minor) Add nearpoint search support (#92) Nearpoint search reduces the time required to perform an exception entry lookup by grouping transparent functions by their unwind information and sorting all groups of functions by size from largest to smallest. This ordering allows for a lookup table to be built that can provide information of where to find an exception entry. The goal for valid nearpoint tables is to ensure that for all inputs, every output is within 8 entries of the desired entry. The current format of the nearpoint table and descriptors is experimental and thus may change between new updates.
✨ (minor) Add handled state to e-except (#85) Resolves #37 - Add handled state and its usage to the exception algorithm. Resolves #19 - Make exception control block thread_local which reduces RAM usage for exceptions by only allocating the amount of memory needed for the `exception_ptr` instance. Resolves #42 - Use memory resource for allocations over static array of bytes. - Add `ke::exception_allocation<>` header for exceptions. It contains the object's total size and the allocator that allocated it. This allocator is used when the object is freed. - Make the size of the default exception memory resource 64 bytes. - Limit RTTI hierarchy to 8 nodes.
⚡ (patch) Preload unwind instructions for cxa_throw & rethrow (#83) On the stm32f103c8 benchmark "0% cleanup" - 10x frames: 96us - 30x frames: 201.3us - 50x frames: 308.6us - 70x frames: 389.2us (previously 422us) Withe 70x frames we've reduced the runtime by 32.8us
🐛 (patch) Wrap _Unwind_Resume (#78) When using LTO, the compiler may emit a `_Unwind_Resume` call rather than a `__cxa_end_cleanup` at the end of a landing pad. Calling GCC's unwinder while the estell unwinder is running will be UB. This wraps that API to call our `__cxa_end_cleanup`. The pointer to the current exception object passed to _Unwind_Resume, is ignored.
PreviousNext