mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-05 03:20:39 -08:00
Faster bytecode immediate argument fetching
* src/bytecode.c (FETCH2): Use `|` instead of `+` to combine the bytes forming a 16-bit immediate argument so that GCC (prior to version 12) recognises the idiom and generates a 16-bit load. This applies for little-endian machines with cheap unaligned accesses such as x86[-64], arm64 and power64le. This 1-character change results in a measurable speed gain on many kinds of Lisp code, as 16-bit immediates are used by all jump instructions. Clang performs this optimisation for both `+` and `|` from version 10.
This commit is contained in:
parent
fe65db05f4
commit
2fb98486e1
1 changed files with 1 additions and 1 deletions
|
|
@ -291,7 +291,7 @@ enum byte_code_op
|
|||
/* Fetch two bytes from the bytecode stream and make a 16-bit number
|
||||
out of them. */
|
||||
|
||||
#define FETCH2 (op = FETCH, op + (FETCH << 8))
|
||||
#define FETCH2 (op = FETCH, op | (FETCH << 8))
|
||||
|
||||
/* Push X onto the execution stack. The expression X should not
|
||||
contain TOP, to avoid competing side effects. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue