summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2022-03-14 12:57:29 +0100
committerMattias EngdegÄrd <mattiase@acm.org>2022-03-17 16:38:22 +0100
commit751c8f88c4faddb2b4f5d5ba3f051e8cd2c0153c (patch)
tree73078523cc6c2343db46ff45c8189e1d75055c9a /lisp/emacs-lisp
parentedb28bf669b890b7498cad0fd818ffa38b5e13a9 (diff)
downloademacs-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')
0 files changed, 0 insertions, 0 deletions