Skip to content

Tags: libhal/libhal-exceptions

Tags

1.5.0

Toggle 1.5.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
⚡ (minor) Cleanup and slight optimiztation (#98)

* 🗑️ (patch) Remove extra includes

* Add catch_all to type_info list

* Cleaner and faster implementation

1.4.1

Toggle 1.4.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
⚡ (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.

1.4.0

Toggle 1.4.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
⚡ (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.

1.3.2

Toggle 1.3.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
🏁 (patch) Add depth of 1 benchmark (#87)

- 🐛 rethrow exception should set state to handled if raise_exception returns.

1.3.1

Toggle 1.3.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
🐛 (patch) Separate control from GCC & e-except (#86)

GCC needs more memory because it needs to allocate the exception
header for every exception.

1.3.0

Toggle 1.3.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
✨ (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.

1.2.5

Toggle 1.2.5's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
⚡ (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

1.2.4

Toggle 1.2.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
🐛 (patch) Fix missing __wrap___cxa_call_unexpected (#82)

1.2.3

Toggle 1.2.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
🚨 (patch) Fix compiler warnings and cleanup code (#81)

- Cleanup and optimize capture and restore cpu assembly functions.

1.2.2

Toggle 1.2.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
🐛 (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.