diff options
author | Mattias EngdegÄrd <mattiase@acm.org> | 2022-03-14 12:57:29 +0100 |
---|---|---|
committer | Mattias EngdegÄrd <mattiase@acm.org> | 2022-03-17 16:38:22 +0100 |
commit | 751c8f88c4faddb2b4f5d5ba3f051e8cd2c0153c (patch) | |
tree | 73078523cc6c2343db46ff45c8189e1d75055c9a /lisp/emacs-lisp/cl-generic.el | |
parent | edb28bf669b890b7498cad0fd818ffa38b5e13a9 (diff) | |
download | emacs-751c8f88c4faddb2b4f5d5ba3f051e8cd2c0153c.tar.gz emacs-751c8f88c4faddb2b4f5d5ba3f051e8cd2c0153c.tar.bz2 emacs-751c8f88c4faddb2b4f5d5ba3f051e8cd2c0153c.zip |
Put bytecode stack frame metadata in a struct
Using a plain C struct instead of type-punning Lisp_Object stack slots
makes the bytecode interpreter code more type-safe and potentially
faster (from better alias analysis), and the special-purpose accessors
are no longer needed. It also reduces the stack requirements when
using 64-bit Lisp_Object on 32-bit platforms.
* src/bytecode.c (enum stack_frame_index)
(sf_get_ptr, sf_set_ptr, sf_get_lisp_ptr, sf_set_lisp_ptr,
sf_get_saved_pc, sf_set_saved_pc): Remove.
(BC_STACK_SIZE): Now in bytes, not Lisp words.
(struct bc_frame): New.
(init_bc_thread, mark_bytecode, Finternal_stack_stats, valid_sp)
(exec_byte_code):
* src/lisp.h (struct handler, get_act_rec, set_act_rec):
Adapt to new struct bc_frame.
Diffstat (limited to 'lisp/emacs-lisp/cl-generic.el')
0 files changed, 0 insertions, 0 deletions