From: Andrea Corallo Date: Fri, 12 Mar 2021 21:19:51 +0000 (+0100) Subject: * Fix circular dependecy when loading a modified comp.el (bug#47049) X-Git-Tag: emacs-28.0.90~2727^2~74 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d018584814e0c15f13bc458ba54491239b584069;p=emacs.git * 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. --- diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index a62efc7e025..866ee8dcf73 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -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.