summaryrefslogtreecommitdiff
path: root/lisp/net/newst-treeview.el
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2021-02-21 15:24:41 +0100
committerMattias EngdegÄrd <mattiase@acm.org>2021-02-21 21:58:25 +0100
commitd0c47652e527397cae96444c881bf60455c763c1 (patch)
tree9dfa3ce23f5251726ebd287298486667a135101b /lisp/net/newst-treeview.el
parent2790c6a572a905359c60f055c682b28ef5c8ff0d (diff)
downloademacs-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