diff options
| author | Stefan Monnier | 2014-05-27 10:56:03 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2014-05-27 10:56:03 -0400 |
| commit | 53bc1e2982f6ac29a75ce63bc9a35bb19e0f58e1 (patch) | |
| tree | 3e3639268c4ef8a5e55bab665c7cebcbba34a966 | |
| parent | 6c5fa28d4f72c29ff5958095ebbb1623dc030346 (diff) | |
| download | emacs-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/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/emacs-lisp/byte-opt.el | 18 |
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 @@ | |||
| 1 | 2014-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 | |||
| 1 | 2014-05-27 Glenn Morris <rgm@gnu.org> | 6 | 2014-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) |