emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/native-comp d018584: * Fix circular dependecy when loading a mod


From: Andrea Corallo
Subject: feature/native-comp d018584: * Fix circular dependecy when loading a modified comp.el (bug#47049)
Date: Fri, 12 Mar 2021 16:35:54 -0500 (EST)

branch: feature/native-comp
commit d018584814e0c15f13bc458ba54491239b584069
Author: Andrea Corallo <akrl@sdf.org>
Commit: Andrea Corallo <akrl@sdf.org>

    * 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.
---
 lisp/emacs-lisp/comp.el | 31 +++++++++++++++++--------------
 1 file changed, 17 insertions(+), 14 deletions(-)

diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index a62efc7..866ee8d 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.
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]