From: Mattias EngdegÄrd Date: Sat, 25 Mar 2023 14:38:00 +0000 (+0100) Subject: Generalise a LAP optimisation rule X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=52b67740d10df8ca539fdc2c7d50283997683141;p=emacs.git Generalise a LAP optimisation rule * lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode): Accept (stack-set 1) as equivalent to (discardN-preserve-tos 1) in a rule previously overlooked. This is usually beneficial in code size and almost always shortens dynamic paths. --- diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index 3c7aeb89525..0891ec80beb 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el @@ -2765,7 +2765,9 @@ If FOR-EFFECT is non-nil, the return value is assumed to be of no importance." (or (memq (caar tmp) '(byte-discard byte-discardN)) ;; Make sure we don't hoist a discardN-preserve-tos ;; that really should be merged or deleted instead. - (and (eq (caar tmp) 'byte-discardN-preserve-tos) + (and (or (eq (caar tmp) 'byte-discardN-preserve-tos) + (and (eq (caar tmp) 'byte-stack-set) + (eql (cdar tmp) 1))) (let ((next (cadr tmp))) (not (or (memq (car next) '(byte-discardN-preserve-tos