diff options
author | Mattias EngdegÄrd <mattiase@acm.org> | 2021-02-21 15:24:41 +0100 |
---|---|---|
committer | Mattias EngdegÄrd <mattiase@acm.org> | 2021-02-21 21:58:25 +0100 |
commit | d0c47652e527397cae96444c881bf60455c763c1 (patch) | |
tree | 9dfa3ce23f5251726ebd287298486667a135101b /lisp/net/newst-treeview.el | |
parent | 2790c6a572a905359c60f055c682b28ef5c8ff0d (diff) | |
download | emacs-d0c47652e527397cae96444c881bf60455c763c1.tar.gz emacs-d0c47652e527397cae96444c881bf60455c763c1.tar.bz2 emacs-d0c47652e527397cae96444c881bf60455c763c1.zip |
Faster, more compact, and readable closure creation
Simplify closure creation by calling a single function at run time
instead of putting it together from small pieces. This is faster
(by about a factor 2), takes less space on disk and in memory, and
makes internal functions somewhat readable in disassembly listings again.
This is done by creating a prototype function at compile-time whose
closure variables are placeholder values V0, V1... which can be seen
in the disassembly. The prototype is then cloned at run time using
the new make-closure function that replaces the placeholders with
the actual closure variables.
* lisp/emacs-lisp/bytecomp.el (byte-compile-make-closure):
Generate call to make-closure from a prototype function.
* src/alloc.c (Fmake_closure): New function.
(syms_of_alloc): Defsubr it.
* src/data.c (syms_of_data): Defsym byte-code-function-p.
Diffstat (limited to 'lisp/net/newst-treeview.el')
0 files changed, 0 insertions, 0 deletions