mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
* Fix circular dependecy when loading a modified comp.el (bug#47049)
* lisp/emacs-lisp/comp.el (comp-subr-trampoline-install): Move it before other functional code.
This commit is contained in:
parent
82bd6d57d5
commit
d018584814
1 changed files with 17 additions and 14 deletions
|
|
@ -648,6 +648,23 @@ Useful to hook into pass checkers.")
|
|||
'native-compiler-error)
|
||||
|
||||
|
||||
;; Moved early to avoid circularity when comp.el is loaded and
|
||||
;; `macroexpand' needs to be advised (bug#47049).
|
||||
;;;###autoload
|
||||
(defun comp-subr-trampoline-install (subr-name)
|
||||
"Make SUBR-NAME effectively advice-able when called from native code."
|
||||
(unless (or (null comp-enable-subr-trampolines)
|
||||
(memq subr-name comp-never-optimize-functions)
|
||||
(gethash subr-name comp-installed-trampolines-h))
|
||||
(cl-assert (subr-primitive-p (symbol-function subr-name)))
|
||||
(comp--install-trampoline
|
||||
subr-name
|
||||
(or (comp-trampoline-search subr-name)
|
||||
(comp-trampoline-compile subr-name)
|
||||
;; Should never happen.
|
||||
(cl-assert nil)))))
|
||||
|
||||
|
||||
(cl-defstruct (comp-vec (:copier nil))
|
||||
"A re-sizable vector like object."
|
||||
(data (make-hash-table :test #'eql) :type hash-table
|
||||
|
|
@ -3743,20 +3760,6 @@ Return the trampoline if found or nil otherwise."
|
|||
finally (error "Cannot find suitable directory for output in \
|
||||
`comp-eln-load-path'")))))
|
||||
|
||||
;;;###autoload
|
||||
(defun comp-subr-trampoline-install (subr-name)
|
||||
"Make SUBR-NAME effectively advice-able when called from native code."
|
||||
(unless (or (null comp-enable-subr-trampolines)
|
||||
(memq subr-name comp-never-optimize-functions)
|
||||
(gethash subr-name comp-installed-trampolines-h))
|
||||
(cl-assert (subr-primitive-p (symbol-function subr-name)))
|
||||
(comp--install-trampoline
|
||||
subr-name
|
||||
(or (comp-trampoline-search subr-name)
|
||||
(comp-trampoline-compile subr-name)
|
||||
;; Should never happen.
|
||||
(cl-assert nil)))))
|
||||
|
||||
|
||||
;; Some entry point support code.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue