[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 52b67740d10: Generalise a LAP optimisation rule
From: |
Mattias Engdegård |
Subject: |
master 52b67740d10: Generalise a LAP optimisation rule |
Date: |
Sat, 25 Mar 2023 12:22:22 -0400 (EDT) |
branch: master
commit 52b67740d10df8ca539fdc2c7d50283997683141
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>
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.
---
lisp/emacs-lisp/byte-opt.el | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 52b67740d10: Generalise a LAP optimisation rule,
Mattias Engdegård <=