-
-
Notifications
You must be signed in to change notification settings - Fork 272
Open
Description
To keep track of some things we could do to increase the performance of exception unwinding:
- Keep a free list (or just a constant-sized buffer) for
_d_exceptionand cleanup block structs to avoid memory allocations. - For the unwind target frame (i.e. where the
catchis), cache the results of the search phase inside_d_exception(or the cache in the context on ARM EHABI). This spares us from iterating through the tables and comparing classinfos a second time. - Mark up (re)throw-related runtime functions as
nounwind. Might lead to slightly more compact call site code. - Avoid pushing a cleanup record/calling
_d_eh_begin_catchfor landing pads that are only for catches and have no cleanup part. Might be a bit tricky to figure out, and requires putting the_d_eh_begin_catchcall into a separate BB before calling the catch (which is shared between different landing pads), or otherwise handling this situation in a more intelligent way.
Metadata
Metadata
Assignees
Labels
No labels