Call `comp--subr-safe-advice' from the advice machinery
* lisp/emacs-lisp/nadvice.el (advice--add-function): Call `comp--subr-safe-advice' when necessary. * lisp/emacs-lisp/advice.el (ad-add-advice): Likewhise.
This commit is contained in:
parent
3ec1b932c9
commit
db354ffd57
2 changed files with 18 additions and 0 deletions
|
@ -2075,6 +2075,8 @@ mapped to the closest extremal position).
|
|||
If FUNCTION was not advised already, its advice info will be
|
||||
initialized. Redefining a piece of advice whose name is part of
|
||||
the cache-id will clear the cache."
|
||||
(when (subr-primitive-p (symbol-function function))
|
||||
(comp--subr-safe-advice function))
|
||||
(cond ((not (ad-is-advised function))
|
||||
(ad-initialize-advice-info function)
|
||||
(ad-set-advice-info-field
|
||||
|
|
|
@ -318,6 +318,22 @@ is also interactive. There are 3 cases:
|
|||
|
||||
;;;###autoload
|
||||
(defun advice--add-function (where ref function props)
|
||||
(when (and (boundp 'comp-ctxt)
|
||||
(subr-primitive-p (gv-deref ref)))
|
||||
(let ((subr-name (intern (subr-name (gv-deref ref)))))
|
||||
;; Requiring the native compiler to advice `macroexpand' cause a
|
||||
;; circular dependency in eager macro expansion.
|
||||
;; uniquify is advising `rename-buffer' while being loaded in
|
||||
;; loadup.el. This would require the whole native compiler
|
||||
;; machinery but we don't want to include it in the dump.
|
||||
;; Because these two functions are already handled in
|
||||
;; `comp-never-optimize-functions' we hack the problem this way
|
||||
;; for now :/
|
||||
(unless (memq subr-name '(macroexpand rename-buffer))
|
||||
;; Must require explicitly as during bootstrap we have no
|
||||
;; autoloads.
|
||||
(require 'comp)
|
||||
(comp--subr-safe-advice subr-name))))
|
||||
(let* ((name (cdr (assq 'name props)))
|
||||
(a (advice--member-p (or name function) (if name t) (gv-deref ref))))
|
||||
(when a
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue