emacs-diffs
[Top][All Lists]
Advanced

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

master 9396b7d0b4 2/2: Suspend temp .elc production when native compilin


From: Andrea Corallo
Subject: master 9396b7d0b4 2/2: Suspend temp .elc production when native compiling till when necessary
Date: Wed, 19 Jan 2022 16:05:02 -0500 (EST)

branch: master
commit 9396b7d0b425a114eb6e8695c439be3d30490f98
Author: Andrea Corallo <akrl@sdf.org>
Commit: Andrea Corallo <akrl@sdf.org>

    Suspend temp .elc production when native compiling till when necessary
    
    * lisp/emacs-lisp/bytecomp.el (byte-to-native-output-buffer-file):
    Rename from `byte-to-native-output-file'.
    (byte-write-target-file): Update.
    (byte-compile-file): Write the temporary .elc only when not native
    compiling.
    (byte-compile-file): Kill the .elc buffer only when not native
    compiling.
    * lisp/emacs-lisp/comp.el (batch-byte+native-compile): Instead of just
    renaming the temporary .elc make use of `byte-write-target-file' to
    write it down and kill the temporary buffer.
---
 lisp/emacs-lisp/bytecomp.el | 15 ++++++++++-----
 lisp/emacs-lisp/comp.el     | 10 ++++++----
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 49d4ca6510..7dfe21441b 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -615,8 +615,8 @@ Each element is (INDEX . VALUE)")
   "Hash byte-code -> byte-to-native-lambda.")
 (defvar byte-to-native-top-level-forms nil
   "List of top level forms.")
-(defvar byte-to-native-output-file nil
-  "Temporary file containing the byte-compilation output.")
+(defvar byte-to-native-output-buffer-file nil
+  "Pair holding byte-compilation output buffer, elc filename.")
 (defvar byte-to-native-plist-environment nil
   "To spill `overriding-plist-environment'.")
 
@@ -2008,7 +2008,7 @@ If compilation is needed, this functions returns the 
result of
       ;; deleting target-file before writing it.
       (if byte-native-compiling
           ;; Defer elc final renaming.
-          (setf byte-to-native-output-file
+          (setf byte-to-native-output-buffer-file
                 (cons tempfile target-file))
         (rename-file tempfile target-file t)))))
 
@@ -2143,7 +2143,11 @@ See also `emacs-lisp-byte-compile-and-load'."
                     ;; Need to expand in case TARGET-FILE doesn't
                     ;; include a directory (Bug#45287).
                     (expand-file-name target-file))))
-              (byte-write-target-file (current-buffer) target-file)
+              (if byte-native-compiling
+                  ;; Defer elc production.
+                  (setf byte-to-native-output-buffer-file
+                        (cons (current-buffer) target-file))
+                (byte-write-target-file (current-buffer) target-file))
              (or noninteractive
                  byte-native-compiling
                  (message "Wrote %s" target-file)))
@@ -2164,7 +2168,8 @@ See also `emacs-lisp-byte-compile-and-load'."
                                  "Cannot overwrite file"
                                "Directory not writable or nonexistent")
                              target-file))))))
-         (kill-buffer (current-buffer)))
+          (unless byte-native-compiling
+           (kill-buffer (current-buffer))))
        (if (and byte-compile-generate-call-tree
                 (or (eq t byte-compile-generate-call-tree)
                     (y-or-n-p (format "Report call tree for %s? "
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index e50538c423..c9cb2b1c7b 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -4212,11 +4212,13 @@ variable 'NATIVE_DISABLED' is set, only byte compile."
       (batch-byte-compile)
     (cl-assert (length= command-line-args-left 1))
     (let ((byte+native-compile t)
-          (byte-to-native-output-file nil))
+          (byte-to-native-output-buffer-file nil))
       (batch-native-compile)
-      (pcase byte-to-native-output-file
-        (`(,tempfile . ,target-file)
-         (rename-file tempfile target-file t)))
+      (pcase byte-to-native-output-buffer-file
+        (`(,temp-buffer . ,target-file)
+         (unwind-protect
+             (byte-write-target-file temp-buffer target-file))
+         (kill-buffer temp-buffer)))
       (setq command-line-args-left (cdr command-line-args-left)))))
 
 ;;;###autoload



reply via email to

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