From e208de9d259cb50c19d1f2a5086fd8301ac71781 Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Sat, 25 Apr 2020 14:39:11 +0100 Subject: [PATCH] Store ongoing compilations processes as hash table. * lisp/emacs-lisp/comp.el (comp-async-processes): Rename as `comp-async-compilations'. (comp-async-runnings): Make use as `comp-async-compilations'. (comp-run-async-workers): Likewise. --- lisp/emacs-lisp/comp.el | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 1693e06018a..1369dd115dd 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -2146,16 +2146,21 @@ Prepare every function for final compilation and drive the C back-end." (defvar comp-files-queue () "List of Elisp files to be compiled.") -(defvar comp-async-processes () - "List of running async compilation processes.") +(defvar comp-async-compilations (make-hash-table :test #'equal) + "Hash table file-name -> async compilation process.") (defun comp-async-runnings () "Return the number of async compilations currently running. This function has the side effect of cleaning-up finished -processes from `comp-async-processes'" - (setf comp-async-processes - (cl-delete-if-not #'process-live-p comp-async-processes)) - (length comp-async-processes)) +processes from `comp-async-compilations'" + (cl-loop + for file-name in (cl-loop + for file-name being each hash-key of comp-async-compilations + for prc = (gethash file-name comp-async-compilations) + unless (process-live-p prc) + collect file-name) + do (remhash file-name comp-async-compilations)) + (hash-table-count comp-async-compilations)) (let (num-cpus) (defun comp-effective-async-max-jobs () @@ -2213,7 +2218,7 @@ display a message." (comp-output-filename source-file1) (eq load1 'late))) (comp-run-async-workers))))) - (push process comp-async-processes)) + (puthash source-file process comp-async-compilations)) when (>= (comp-async-runnings) (comp-effective-async-max-jobs)) do (cl-return))) ;; No files left to compile and all processes finished. -- 2.39.5