Small unwind-protect optimisation improvement
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Use the current for-effect mode when optimising the body form, instead of always optimising it for value.
This commit is contained in:
parent
8106cb50f5
commit
a1d90e48bb
1 changed files with 6 additions and 7 deletions
|
@ -439,13 +439,12 @@ for speeding up processing.")
|
|||
(byte-optimize-body (cdr clause) for-effect))))
|
||||
clauses)))
|
||||
|
||||
;; `unwind-protect' is a special form which here takes the shape
|
||||
;; (unwind-protect EXPR :fun-body UNWIND-FUN).
|
||||
;; We can treat it as if it were a plain function at this point,
|
||||
;; although there are specific optimizations possible.
|
||||
;; In particular, the return value of UNWIND-FUN is never used
|
||||
;; so its body should really be compiled for-effect, but we
|
||||
;; don't do that right now.
|
||||
(`(unwind-protect ,protected-expr :fun-body ,unwind-fun)
|
||||
;; FIXME: The return value of UNWIND-FUN is never used so we
|
||||
;; could potentially optimise it for-effect, but we don't do
|
||||
;; that right no.
|
||||
`(,fn ,(byte-optimize-form protected-expr for-effect)
|
||||
:fun-body ,(byte-optimize-form unwind-fun)))
|
||||
|
||||
(`(catch ,tag . ,exps)
|
||||
`(,fn ,(byte-optimize-form tag nil)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue