We currently unwind manually by looking at the disassembly and unwinding manually in the code. If the code changes, this would break the manual unwinding. We can save on cycles by searching for and caching the location of the __cxa_throw and __cxa_rethrow table entries on system boot up. That way the system can benefit from faster unwinding throughout the duration of the application. On ARM Cortex M, this would cost 8 bytes total for the two pointers.
We currently unwind manually by looking at the disassembly and unwinding manually in the code. If the code changes, this would break the manual unwinding. We can save on cycles by searching for and caching the location of the
__cxa_throwand__cxa_rethrowtable entries on system boot up. That way the system can benefit from faster unwinding throughout the duration of the application. On ARM Cortex M, this would cost 8 bytes total for the two pointers.