aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2014-05-27 10:56:03 -0400
committerStefan Monnier2014-05-27 10:56:03 -0400
commit53bc1e2982f6ac29a75ce63bc9a35bb19e0f58e1 (patch)
tree3e3639268c4ef8a5e55bab665c7cebcbba34a966
parent6c5fa28d4f72c29ff5958095ebbb1623dc030346 (diff)
downloademacs-53bc1e2982f6ac29a75ce63bc9a35bb19e0f58e1.tar.gz
emacs-53bc1e2982f6ac29a75ce63bc9a35bb19e0f58e1.zip
* lisp/emacs-lisp/byte-opt.el (byte-optimize-binary-predicate): Don't assume
there can't be more than 2 arguments. Fixes: debbugs:17584
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/emacs-lisp/byte-opt.el18
2 files changed, 15 insertions, 8 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 1b886000014..fe34854ab53 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
12014-05-27 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacs-lisp/byte-opt.el (byte-optimize-binary-predicate): Don't assume
4 there can't be more than 2 arguments (bug#17584).
5
12014-05-27 Glenn Morris <rgm@gnu.org> 62014-05-27 Glenn Morris <rgm@gnu.org>
2 7
3 * simple.el (filter-buffer-substring-functions) 8 * simple.el (filter-buffer-substring-functions)
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index b1e06410da4..fe6640cc51e 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -859,14 +859,16 @@
859 859
860 860
861(defun byte-optimize-binary-predicate (form) 861(defun byte-optimize-binary-predicate (form)
862 (if (macroexp-const-p (nth 1 form)) 862 (cond
863 (if (macroexp-const-p (nth 2 form)) 863 ((or (not (macroexp-const-p (nth 1 form)))
864 (condition-case () 864 (nthcdr 3 form)) ;; In case there are more than 2 args.
865 (list 'quote (eval form)) 865 form)
866 (error form)) 866 ((macroexp-const-p (nth 2 form))
867 ;; This can enable some lapcode optimizations. 867 (condition-case ()
868 (list (car form) (nth 2 form) (nth 1 form))) 868 (list 'quote (eval form))
869 form)) 869 (error form)))
870 (t ;; This can enable some lapcode optimizations.
871 (list (car form) (nth 2 form) (nth 1 form)))))
870 872
871(defun byte-optimize-predicate (form) 873(defun byte-optimize-predicate (form)
872 (let ((ok t) 874 (let ((ok t)