Copying all of the saved register state on every entry to
parseInstruction is a severe performance contraint, especially
because most of this saved state is never used.This patch reduces the size of PrologInfo from 580 bytes on
x86_linux to 320, On x86 linuxgreatly reducing the amount of time spent in
this is about 560 bytes, and will be more on other platforms.
When performance testing libunwind, this memcpy appears at the
top of nearly all our testsmemset and memcpy to initialize and move it around inside the
By only saving this state as neededUnfortunately, due to cache misses and other issues, we see increasing in performancethe overall
of around 2.5% forperformance of the ctak test hereunwind is slightly slower.
Certain internal extremely exception-heavy tasks run in about 2/3
Note that by stashing the new boolean inside what had been padding in
the original structure, this uses no additional memorySo abandoned.