diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2022-03-30 13:54:56 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2022-03-30 17:08:28 -0400 |
commit | 6f973faa912a5ac1ba643c6f5deb0c02baa0ba6d (patch) | |
tree | 96071fd19e3863ec34b4d32235e573d9106bf1b2 /lisp/emacs-lisp/comp-cstr.el | |
parent | b12ad270ebffb2b048f01d2992b472503b78dc33 (diff) | |
download | emacs-6f973faa912a5ac1ba643c6f5deb0c02baa0ba6d.tar.gz emacs-6f973faa912a5ac1ba643c6f5deb0c02baa0ba6d.tar.bz2 emacs-6f973faa912a5ac1ba643c6f5deb0c02baa0ba6d.zip |
cl-generic: Use OClosures for `cl--generic-isnot-nnm-p`
Rewrite the handling of `cl-no-next-method` to get rid of the hideous
hack used in `cl--generic-isnot-nnm-p` and also to try and move
some of the cost to the construction of the effective method rather
than its invocation. This speeds up method calls measurably when
there's a `cl-call-next-method` in the body.
* lisp/loadup.el ("emacs-lisp/oclosure"): Load.
* lisp/emacs-lisp/oclosure.el (oclosure-define): Remove workaround now
that we're preloaded.
* lisp/emacs-lisp/cl-generic.el (cl--generic-method): Rename `uses-cnm`
to `call-con` to reflect it's not a boolean any more.
(cl-defmethod): Adjust to the new name and new values.
(cl-generic-define-method): Adjust to the new name.
(cl--generic-lambda): Use the new `curried` calling convention.
(cl--generic-no-next-method-function): Delete function.
(cl--generic-nnm): New type.
(cl-generic-call-method): Rewrite to support the various
calling conventions.
(cl--generic-nnm-sample, cl--generic-cnm-sample): Delete consts.
(cl--generic-isnot-nnm-p): Rewrite using `oclosure-type`.
(cl--generic-method-info): Add support for new calling convention.
Diffstat (limited to 'lisp/emacs-lisp/comp-cstr.el')
0 files changed, 0 insertions, 0 deletions