emacs-diffs
[Top][All Lists]
Advanced

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

feature/native-comp be907b0: * Spawn a sub-process for running GCC also


From: Andrea Corallo
Subject: feature/native-comp be907b0: * Spawn a sub-process for running GCC also in batch mode (bug#45056)
Date: Mon, 7 Dec 2020 10:43:46 -0500 (EST)

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

    * Spawn a sub-process for running GCC also in batch mode (bug#45056)
    
        * lisp/emacs-lisp/comp.el (comp-async-compilation): New variable.
        (comp-final): Always run the C side of the compilation as a
        sub-process unless during bootstrap or async compilation.
        (comp-run-async-workers): Set `comp-async-compilation'.
---
 lisp/emacs-lisp/comp.el | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index 13f9beb..339fff7 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -2805,11 +2805,18 @@ Prepare every function for final compilation and drive 
the C back-end."
       (and (comp--release-ctxt)
            compile-result))))
 
+(defvar comp-async-compilation nil
+  "Non-nil while executing an asyncronous native compilation.")
+
 (defun comp-final (_)
   "Final pass driving the C back-end for code emission."
   (maphash #'comp-ret-type-spec (comp-ctxt-funcs-h comp-ctxt))
   (unless comp-dry-run
-    (if noninteractive
+    ;; Always run the C side of the compilation as a sub-process
+    ;; unless during bootstrap or async compilation (bug#45056).  GCC
+    ;; leaks memory but also interfere with the ability of Emacs to
+    ;; detect when a sub-process completes (TODO understand why).
+    (if (or byte-native-for-bootstrap comp-async-compilation)
        (comp-final1)
       ;; Call comp-final1 in a child process.
       (let* ((output (comp-ctxt-output comp-ctxt))
@@ -3073,6 +3080,7 @@ display a message."
                             (setf comp-speed ,comp-speed
                                   comp-debug ,comp-debug
                                   comp-verbose ,comp-verbose
+                                  comp-async-compilation t
                                   comp-eln-load-path ',comp-eln-load-path
                                   comp-native-driver-options
                                   ',comp-native-driver-options



reply via email to

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