]> git.eshelyaron.com Git - emacs.git/commitdiff
Simplify and streamline optimizer clauses
authorMattias Engdegård <mattiase@acm.org>
Mon, 27 Jul 2020 09:27:00 +0000 (11:27 +0200)
committerMattias Engdegård <mattiase@acm.org>
Tue, 28 Jul 2020 13:48:38 +0000 (15:48 +0200)
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
Remove clause for 'with-output-to-temp-buffer', since it is a
macro and will have been expanded before reaching this point.
Move clauses for 'lambda' and 'closure' to avoid splitting
a cond jump table.

lisp/emacs-lisp/byte-opt.el

index 6f801be5457323563fff00c87748bce59ee8ea04..48efff911f7f67f764e592deb1114168e611085b 100644 (file)
           (and (nth 1 form)
                (not for-effect)
                form))
-         ((eq (car-safe fn) 'lambda)
-          (let ((newform (byte-compile-unfold-lambda form)))
-            (if (eq newform form)
-                ;; Some error occurred, avoid infinite recursion
-                form
-              (byte-optimize-form-code-walker newform for-effect))))
-         ((eq (car-safe fn) 'closure) form)
          ((memq fn '(let let*))
           ;; recursively enter the optimizer for the bindings and body
           ;; of a let or let*.  This for depth-firstness: forms that
           ;; will be optimized away in the lap-optimize pass.
           (cons fn (byte-optimize-body (cdr form) for-effect)))
 
-         ((eq fn 'with-output-to-temp-buffer)
-          ;; this is just like the above, except for the first argument.
-          (cons fn
-            (cons
-             (byte-optimize-form (nth 1 form) nil)
-             (byte-optimize-body (cdr (cdr form)) for-effect))))
-
          ((eq fn 'if)
           (when (< (length form) 3)
             (byte-compile-warn "too few arguments for `if'"))
           ;; Needed as long as we run byte-optimize-form after cconv.
           ((eq fn 'internal-make-closure) form)
 
+         ((eq (car-safe fn) 'lambda)
+          (let ((newform (byte-compile-unfold-lambda form)))
+            (if (eq newform form)
+                ;; Some error occurred, avoid infinite recursion
+                form
+              (byte-optimize-form-code-walker newform for-effect))))
+
+         ((eq (car-safe fn) 'closure) form)
+
           ((byte-code-function-p fn)
            (cons fn (mapcar #'byte-optimize-form (cdr form))))