summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2022-06-18 15:15:57 +0200
committerMattias EngdegÄrd <mattiase@acm.org>2022-06-18 15:19:57 +0200
commit2ebe0524e823c2b811f484bd4df977df5fa49203 (patch)
treef45f5321303e90ef74084526dd05489d94720cb7
parent608f349cd29e9754279d963e33e19eb46b849882 (diff)
downloademacs-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.el9
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)))