diff options
| author | Andrea Corallo | 2026-03-12 14:30:54 +0100 |
|---|---|---|
| committer | Andrea Corallo | 2026-03-12 14:30:54 +0100 |
| commit | 6198bb89b453a8b93113ac6bbb102043f5636334 (patch) | |
| tree | 0006eddd65f0a0508be443f1a0cc3f22d437c74f /etc/TODO | |
| parent | fe121ef586b4adf2befc7e2af42d65f7acc25891 (diff) | |
| download | emacs-scratch/better-comp.tar.gz emacs-scratch/better-comp.zip | |
nativecomp: optimize local CU calls at speed 2scratch/better-comp
* etc/NEWS: Document speed-2 local call optimization.
* etc/TODO: Remove completed item.
* lisp/emacs-lisp/comp.el
(comp--cu-local-func-c-name-v): New function.
(comp--call-optim-form-call): Enable named local direct calls
at speed 2.
(comp--function-trampoline-form): New helper.
(comp-trampoline-compile, comp-local-function-trampoline-compile):
Share trampoline generation.
* lisp/emacs-lisp/comp-run.el
(comp-local-function-trampoline--install-now): New function.
(comp-local-function-trampoline-install): Install local trampolines.
Defer trampoline compilation until after load.
* src/comp.c (emit_call, emit_ctxt_code, compile_function)
(load_comp_unit, unload_comp_unit): Add local function relocation
support.
(native_comp_local_function_p): New function.
(comp--install-local-function-trampoline): New subr.
(syms_of_comp): Register it and update trampoline docs.
* src/comp.h (Lisp_Native_Comp_Unit): Add local relocation slot.
(native_comp_local_function_p): Declare.
* src/data.c (Ffset): Install local trampolines for redefined
named local native functions. Keep skipping anonymous lambdas.
* src/pdumper.c: Clear local relocation state.
* test/src/comp-tests.el
(comp-tests--run-in-sub-emacs): New helper.
(comp-tests--direct-call-redefinition-form): New helper.
(comp-tests-direct-call-redefinition-speed-split): New test.
(comp-tests-anonymous-lambda-recompile): New test.
(comp-tests-direct-call-with-lambdas): Use an explicit output file.
Diffstat (limited to 'etc/TODO')
| -rw-r--r-- | etc/TODO | 9 |
1 files changed, 0 insertions, 9 deletions
| @@ -993,15 +993,6 @@ It would make it easy to add (and remove) mappings like | |||
| 993 | 993 | ||
| 994 | *** Performance | 994 | *** Performance |
| 995 | 995 | ||
| 996 | **** Intra compilation unit call optimization | ||
| 997 | |||
| 998 | We could have a mechanism similar to what we use for optimizing calls | ||
| 999 | to primitive functions. IE using a link table for each compilation | ||
| 1000 | unit (CU) such that calls from functions in a CU targeting functions | ||
| 1001 | in the same CU don't have to go through funcall. If one of these | ||
| 1002 | functions is redefined, a trampoline is compiled and installed to | ||
| 1003 | restore the redirection through funcall. | ||
| 1004 | |||
| 1005 | **** Better runtime function inlining | 996 | **** Better runtime function inlining |
| 1006 | 997 | ||
| 1007 | Several functions could be open-coded in generated code once exposed to | 998 | Several functions could be open-coded in generated code once exposed to |