summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/byte-run.el
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2020-06-01 12:47:29 +0100
committerAndrea Corallo <akrl@sdf.org>2020-06-19 09:04:49 +0200
commitc37b5446d1f8e567f97f5708008b14a80b6c6d65 (patch)
tree5d93441b0375c399ee872bfcaaca2e4c94113e2f /lisp/emacs-lisp/byte-run.el
parent5a55a845a7c426e82e8a6a6d02bc4a39992871e3 (diff)
downloademacs-c37b5446d1f8e567f97f5708008b14a80b6c6d65.tar.gz
emacs-c37b5446d1f8e567f97f5708008b14a80b6c6d65.tar.bz2
emacs-c37b5446d1f8e567f97f5708008b14a80b6c6d65.zip
Add native compiler dynamic scope support
Add an initial implementation to support dynamic scope. Arg parsing/binding it's done using the existing code in use for bytecode (no ad-hoc code is synthetized for that). * src/lisp.h (struct Lisp_Subr): Add lambda_list field. (SUBR_NATIVE_COMPILED_DYNP): New inliner. * src/alloc.c (mark_object): Update for Add lambda_list field. * src/eval.c (eval_sub, Ffuncall, funcall_lambda): Handle native compiled dynamic scope * src/comp.c (declare_lex_function): Rename from declare_function and rework. (declare_function): New function. (make_subr): Handle daynamic scope * src/pdumper.c (dump_subr): Update for lambda_list field. * lisp/emacs-lisp/comp.el (comp-func): Remove args slot. (comp-func-l, comp-func-d): New classes deriving from `comp-func'. (comp-spill-lap-function): Rework. (comp-prepare-args-for-top-level): New function. (comp-emit-for-top-level, comp-emit-lambda-for-top-level): Make use of `comp-prepare-args-for-top-level'. (comp-limplify-top-level): Use `comp-func-l'. (comp-limplify-function): Emit arg prologue only for dynamic scoped functions. (comp-call-optim-form-call): Use `comp-func-l'. (comp-call-optim, comp-tco): Do not optimize dynamic scoped code.
Diffstat (limited to 'lisp/emacs-lisp/byte-run.el')
0 files changed, 0 insertions, 0 deletions