]> git.eshelyaron.com Git - emacs.git/commitdiff
More aggressive bytecode split between top-level forms (bug#55972)
authorMattias Engdegård <mattiase@acm.org>
Sat, 18 Jun 2022 13:15:57 +0000 (15:15 +0200)
committerMattias Engdegård <mattiase@acm.org>
Sat, 18 Jun 2022 13:19:57 +0000 (15:19 +0200)
* lisp/emacs-lisp/bytecomp.el (byte-compile-keep-pending):
Allow bytecode split between all kinds of top-level forms, not just
those with chunk handlers, to prevent individual chunks from growing
too large.  In particular this helps compilation of
package-quickstart.el.

lisp/emacs-lisp/bytecomp.el

index d28ec0be16d5e4d90ce7101001cf50017a076b7b..7f408472da1b3dacd9f9fbd2b1d0ae9d41f95659 100644 (file)
@@ -2521,13 +2521,12 @@ list that represents a doc string reference.
 (defun byte-compile-keep-pending (form &optional handler)
   (if (memq byte-optimize '(t source))
       (setq form (byte-optimize-one-form form t)))
+  ;; To avoid consing up monstrously large forms at load time, we split
+  ;; the output regularly.
+  (when (nthcdr 300 byte-compile-output)
+    (byte-compile-flush-pending))
   (if handler
       (let ((byte-compile--for-effect t))
-       ;; To avoid consing up monstrously large forms at load time, we split
-       ;; the output regularly.
-       (and (memq (car-safe form) '(fset defalias))
-            (nthcdr 300 byte-compile-output)
-            (byte-compile-flush-pending))
        (funcall handler form)
        (if byte-compile--for-effect
            (byte-compile-discard)))