diff options
author | Mattias EngdegÄrd <mattiase@acm.org> | 2022-06-18 15:15:57 +0200 |
---|---|---|
committer | Mattias EngdegÄrd <mattiase@acm.org> | 2022-06-18 15:19:57 +0200 |
commit | 2ebe0524e823c2b811f484bd4df977df5fa49203 (patch) | |
tree | f45f5321303e90ef74084526dd05489d94720cb7 | |
parent | 608f349cd29e9754279d963e33e19eb46b849882 (diff) | |
download | emacs-2ebe0524e823c2b811f484bd4df977df5fa49203.tar.gz emacs-2ebe0524e823c2b811f484bd4df977df5fa49203.tar.bz2 emacs-2ebe0524e823c2b811f484bd4df977df5fa49203.zip |
More aggressive bytecode split between top-level forms (bug#55972)
* 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.
-rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index d28ec0be16d..7f408472da1 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -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))) |