Mercurial > hg > xemacs-beta
diff lisp/cl-macs.el @ 5651:ae2fdb1fd9e0
Improve for-effect handling in a few places, lisp/
lisp/ChangeLog addition:
2012-05-01 Aidan Kehoe <kehoea@parhasard.net>
* byte-optimize.el (byte-optimize-form-code-walker):
* byte-optimize.el (byte-optimize-or):
Improve handling of for-effect here; we don't need to worry about
discarding multiple values when for-effect is non-nil, this
applies to both #'prog1 and #'or.
* bytecomp.el (progn):
* bytecomp.el (byte-compile-file-form-progn): New.
Put back this function, since it's for-effect there's no need to
worry about passing back multiple values.
* cl-macs.el (cl-pop2):
* cl-macs.el (cl-do-pop):
* cl-macs.el (remf):
* cl.el (pop):
Expand to (prog1 (car-safe PLACE) (setq PLACE (cdr PLACE))) in all
these macros, since that optimizes better (especially for-effect
handling) when byte-compile-delete-errors is nil.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Tue, 01 May 2012 12:43:22 +0100 |
parents | bd80d9103fc8 |
children | cc6f0266bc36 |
line wrap: on
line diff
--- a/lisp/cl-macs.el Mon Apr 23 10:06:39 2012 +0200 +++ b/lisp/cl-macs.el Tue May 01 12:43:22 2012 +0100 @@ -46,7 +46,7 @@ ;;; Code: (defmacro cl-pop2 (place) - (list 'prog1 (list 'car (list 'cdr place)) + (list 'prog1 (list 'car-safe (list 'cdr-safe place)) (list 'setq place (list 'cdr (list 'cdr place))))) (put 'cl-pop2 'edebug-form-spec 'edebug-sexps) @@ -2456,14 +2456,14 @@ ;;;###autoload (defun cl-do-pop (place) (if (cl-simple-expr-p place) - (list 'prog1 (list 'car place) (list 'setf place (list 'cdr place))) + (list 'prog1 (list 'car-safe place) (list 'setf place (list 'cdr place))) (let* ((method (cl-setf-do-modify place t)) (temp (gensym "--pop--"))) (list 'let* (append (car method) (list (list temp (nth 2 method)))) (list 'prog1 - (list 'car temp) + (list 'car-safe temp) (cl-setf-do-store (nth 1 method) (list 'cdr temp))))))) ;;;###autoload