diff options
author | Björn Gustavsson <[email protected]> | 2019-03-04 06:43:06 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2019-03-06 15:42:43 +0100 |
commit | 82431098ec653fc98ab5a9114609f6c8a5a646e0 (patch) | |
tree | 99fcd3171233cce7a76ebab54510ea59c449c10d /erts/emulator/beam/global.h | |
parent | 0a65a7b517ced326b0b0754497a2285821df60f8 (diff) | |
download | otp-82431098ec653fc98ab5a9114609f6c8a5a646e0.tar.gz otp-82431098ec653fc98ab5a9114609f6c8a5a646e0.tar.bz2 otp-82431098ec653fc98ab5a9114609f6c8a5a646e0.zip |
Reduce code size for binary matching instructions
The new compiler required adding support for Y register for all
binary matching instructions. That was (intentionally) done in a
naive way that simplicated duplicated the entire body of each
instruction.
Now it's time to be less naive. Rewrite the binary matching
instructions using micro instructions. Because some of the binary
instructions are huge, that will significantly decrease the size of
process_main().
When compiling with clang, a huge process_main() would mess up
profile-guide optimization resulting in a significant performance
degradation. On my Mac, profile-guide optimzation would decrease
the estone benchmark by 100K estones (about 20 percent). This commit
gives me back the lost estones.
Diffstat (limited to 'erts/emulator/beam/global.h')
0 files changed, 0 insertions, 0 deletions