diff options
author | Andrea Corallo <akrl@sdf.org> | 2020-12-03 17:13:39 +0100 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2020-12-04 00:40:30 +0100 |
commit | 981240078cddbd26b35a65e5311350196542b42b (patch) | |
tree | e8cc19ac8c15eea9f60c0d94302b45efe2b56cfa /test/lisp/emacs-lisp | |
parent | 21104e6808a4496afb8163d92c6fb4d59e3010b7 (diff) | |
download | emacs-981240078cddbd26b35a65e5311350196542b42b.tar.gz emacs-981240078cddbd26b35a65e5311350196542b42b.tar.bz2 emacs-981240078cddbd26b35a65e5311350196542b42b.zip |
* Reduce (half) the number of loads emitted for calling into C code
As after each function call GCC clobbers the pointer to the function
relocation table. This commit modify the code generation to create a
local copy of it for each function. This reduces the average number
of loads for each function call into C from two to one.
* src/comp.c (comp_t): Add 'func_relocs_ptr_type' and
'func_relocs_local' fields.
(emit_call): Use the local func_relocs pointer when possible.
(emit_ctxt_code): Fill 'comp.func_relocs_ptr_type'.
(compile_function): Declare 'func_relocs_ptr_local'.
(compile_function): Assign 'func_relocs_ptr_local' from the global
value in each function prologue.
Diffstat (limited to 'test/lisp/emacs-lisp')
0 files changed, 0 insertions, 0 deletions