summaryrefslogtreecommitdiff
path: root/test/lisp/emacs-lisp
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2020-12-03 17:13:39 +0100
committerAndrea Corallo <akrl@sdf.org>2020-12-04 00:40:30 +0100
commit981240078cddbd26b35a65e5311350196542b42b (patch)
treee8cc19ac8c15eea9f60c0d94302b45efe2b56cfa /test/lisp/emacs-lisp
parent21104e6808a4496afb8163d92c6fb4d59e3010b7 (diff)
downloademacs-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