]> git.eshelyaron.com Git - emacs.git/commit
* Reduce (half) the number of loads emitted for calling into C code
authorAndrea Corallo <akrl@sdf.org>
Thu, 3 Dec 2020 16:13:39 +0000 (17:13 +0100)
committerAndrea Corallo <akrl@sdf.org>
Thu, 3 Dec 2020 23:40:30 +0000 (00:40 +0100)
commit981240078cddbd26b35a65e5311350196542b42b
treee8cc19ac8c15eea9f60c0d94302b45efe2b56cfa
parent21104e6808a4496afb8163d92c6fb4d59e3010b7
* 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.
src/comp.c