changeset 5366:f00192e1cd49

Examining the result of #'length: `eql', not `=', it's better style & cheaper 2011-03-08 Aidan Kehoe <kehoea@parhasard.net> * buff-menu.el (list-buffers-noselect): * byte-optimize.el (byte-optimize-identity): * byte-optimize.el (byte-optimize-if): * byte-optimize.el (byte-optimize-nth): * byte-optimize.el (byte-optimize-nthcdr): * bytecomp.el (byte-compile-warn-wrong-args): * bytecomp.el (byte-compile-two-args-19->20): * bytecomp.el (byte-compile-list): * bytecomp.el (byte-compile-beginning-of-line): * bytecomp.el (byte-compile-set): * bytecomp.el (byte-compile-set-default): * bytecomp.el (byte-compile-values): * bytecomp.el (byte-compile-values-list): * bytecomp.el (byte-compile-integerp): * bytecomp.el (byte-compile-multiple-value-list-internal): * bytecomp.el (byte-compile-throw): * cl-macs.el (cl-do-arglist): * cl-macs.el (cl-parse-loop-clause): * cl-macs.el (multiple-value-bind): * cl-macs.el (multiple-value-setq): * cl-macs.el (get-setf-method): * cmdloop.el (command-error): * cmdloop.el (y-or-n-p-minibuf): * cmdloop.el (yes-or-no-p-minibuf): * coding.el (unencodable-char-position): * cus-edit.el (custom-face-prompt): * cus-edit.el (custom-buffer-create-internal): * cus-edit.el (widget-face-action): * cus-edit.el (custom-group-value-create): * descr-text.el (describe-char-unicode-data): * dialog-gtk.el (popup-builtin-question-dialog): * dragdrop.el (experimental-dragdrop-drop-log-function): * dragdrop.el (experimental-dragdrop-drop-mime-default): * easymenu.el (easy-menu-add): * easymenu.el (easy-menu-remove): * faces.el (read-face-name): * faces.el (set-face-stipple): * files.el (file-name-non-special): * font.el (font-combine-fonts): * font.el (font-set-face-font): * font.el (font-parse-rgb-components): * font.el (font-rgb-color-p): * font.el (font-color-rgb-components): * gnuserv.el (gnuserv-edit-files): * help.el (key-or-menu-binding): * help.el (function-documentation-1): * help.el (function-documentation): * info.el (info): * isearch-mode.el (isearch-exit): * isearch-mode.el (isearch-edit-string): * isearch-mode.el (isearch-*-char): * isearch-mode.el (isearch-complete1): * ldap.el (ldap-encode-country-string): * ldap.el (ldap-decode-string): * minibuf.el (read-file-name-internal-1): * minibuf.el (read-non-nil-coding-system): * minibuf.el (get-user-response): * mouse.el (drag-window-divider): * mule/ccl.el: * mule/ccl.el (ccl-compile-if): * mule/ccl.el (ccl-compile-break): * mule/ccl.el (ccl-compile-repeat): * mule/ccl.el (ccl-compile-write-repeat): * mule/ccl.el (ccl-compile-call): * mule/ccl.el (ccl-compile-end): * mule/ccl.el (ccl-compile-read-multibyte-character): * mule/ccl.el (ccl-compile-write-multibyte-character): * mule/ccl.el (ccl-compile-translate-character): * mule/ccl.el (ccl-compile-mule-to-unicode): * mule/ccl.el (ccl-compile-unicode-to-mule): * mule/ccl.el (ccl-compile-lookup-integer): * mule/ccl.el (ccl-compile-lookup-character): * mule/ccl.el (ccl-compile-map-multiple): * mule/ccl.el (ccl-compile-map-single): * mule/devan-util.el (devanagari-compose-to-one-glyph): * mule/devan-util.el (devanagari-composition-component): * mule/mule-cmds.el (finish-set-language-environment): * mule/viet-util.el: * mule/viet-util.el (viet-encode-viscii-char): * multicast.el (open-multicast-group): * newcomment.el (comment-quote-nested): * newcomment.el (comment-region): * newcomment.el (comment-dwim): * regexp-opt.el (regexp-opt-group): * replace.el (map-query-replace-regexp): * specifier.el (derive-device-type-from-tag-set): * subr.el (skip-chars-quote): * test-harness.el (test-harness-from-buffer): * test-harness.el (batch-test-emacs): * wid-edit.el (widget-choice-action): * wid-edit.el (widget-symbol-prompt-internal): * wid-edit.el (widget-color-action): * window-xemacs.el (push-window-configuration): * window-xemacs.el (pop-window-configuration): * window.el (quit-window): * x-compose.el (electric-diacritic): It's better style, and cheaper (often one assembler instruction vs. a C funcall in the byte code), to use `eql' instead of `=' when it's clear what numerical type a given result will be. Change much of our code to do this, with the help of a byte-compiler change (not comitted) that looked for calls to #'length (which always returns an integer) in its args.
author Aidan Kehoe <kehoea@parhasard.net>
date Tue, 08 Mar 2011 23:41:52 +0000
parents dbae25a8949d
children 8b70d37ab80e
files lisp/ChangeLog lisp/buff-menu.el lisp/byte-optimize.el lisp/bytecomp.el lisp/cl-macs.el lisp/cmdloop.el lisp/coding.el lisp/cus-edit.el lisp/descr-text.el lisp/dialog-gtk.el lisp/dragdrop.el lisp/easymenu.el lisp/faces.el lisp/files.el lisp/font.el lisp/gnuserv.el lisp/help.el lisp/info.el lisp/isearch-mode.el lisp/ldap.el lisp/minibuf.el lisp/mouse.el lisp/mule/ccl.el lisp/mule/devan-util.el lisp/mule/mule-cmds.el lisp/mule/viet-util.el lisp/multicast.el lisp/newcomment.el lisp/regexp-opt.el lisp/replace.el lisp/specifier.el lisp/subr.el lisp/test-harness.el lisp/wid-edit.el lisp/window-xemacs.el lisp/window.el lisp/x-compose.el
diffstat 37 files changed, 230 insertions(+), 124 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/ChangeLog	Tue Mar 08 23:41:52 2011 +0000
@@ -1,3 +1,108 @@
+2011-03-08  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* buff-menu.el (list-buffers-noselect):
+	* byte-optimize.el (byte-optimize-identity):
+	* byte-optimize.el (byte-optimize-if):
+	* byte-optimize.el (byte-optimize-nth):
+	* byte-optimize.el (byte-optimize-nthcdr):
+	* bytecomp.el (byte-compile-warn-wrong-args):
+	* bytecomp.el (byte-compile-two-args-19->20):
+	* bytecomp.el (byte-compile-list):
+	* bytecomp.el (byte-compile-beginning-of-line):
+	* bytecomp.el (byte-compile-set):
+	* bytecomp.el (byte-compile-set-default):
+	* bytecomp.el (byte-compile-values):
+	* bytecomp.el (byte-compile-values-list):
+	* bytecomp.el (byte-compile-integerp):
+	* bytecomp.el (byte-compile-multiple-value-list-internal):
+	* bytecomp.el (byte-compile-throw):
+	* cl-macs.el (cl-do-arglist):
+	* cl-macs.el (cl-parse-loop-clause):
+	* cl-macs.el (multiple-value-bind):
+	* cl-macs.el (multiple-value-setq):
+	* cl-macs.el (get-setf-method):
+	* cmdloop.el (command-error):
+	* cmdloop.el (y-or-n-p-minibuf):
+	* cmdloop.el (yes-or-no-p-minibuf):
+	* coding.el (unencodable-char-position):
+	* cus-edit.el (custom-face-prompt):
+	* cus-edit.el (custom-buffer-create-internal):
+	* cus-edit.el (widget-face-action):
+	* cus-edit.el (custom-group-value-create):
+	* descr-text.el (describe-char-unicode-data):
+	* dialog-gtk.el (popup-builtin-question-dialog):
+	* dragdrop.el (experimental-dragdrop-drop-log-function):
+	* dragdrop.el (experimental-dragdrop-drop-mime-default):
+	* easymenu.el (easy-menu-add):
+	* easymenu.el (easy-menu-remove):
+	* faces.el (read-face-name):
+	* faces.el (set-face-stipple):
+	* files.el (file-name-non-special):
+	* font.el (font-combine-fonts):
+	* font.el (font-set-face-font):
+	* font.el (font-parse-rgb-components):
+	* font.el (font-rgb-color-p):
+	* font.el (font-color-rgb-components):
+	* gnuserv.el (gnuserv-edit-files):
+	* help.el (key-or-menu-binding):
+	* help.el (function-documentation-1):
+	* help.el (function-documentation):
+	* info.el (info):
+	* isearch-mode.el (isearch-exit):
+	* isearch-mode.el (isearch-edit-string):
+	* isearch-mode.el (isearch-*-char):
+	* isearch-mode.el (isearch-complete1):
+	* ldap.el (ldap-encode-country-string):
+	* ldap.el (ldap-decode-string):
+	* minibuf.el (read-file-name-internal-1):
+	* minibuf.el (read-non-nil-coding-system):
+	* minibuf.el (get-user-response):
+	* mouse.el (drag-window-divider):
+	* mule/ccl.el:
+	* mule/ccl.el (ccl-compile-if):
+	* mule/ccl.el (ccl-compile-break):
+	* mule/ccl.el (ccl-compile-repeat):
+	* mule/ccl.el (ccl-compile-write-repeat):
+	* mule/ccl.el (ccl-compile-call):
+	* mule/ccl.el (ccl-compile-end):
+	* mule/ccl.el (ccl-compile-read-multibyte-character):
+	* mule/ccl.el (ccl-compile-write-multibyte-character):
+	* mule/ccl.el (ccl-compile-translate-character):
+	* mule/ccl.el (ccl-compile-mule-to-unicode):
+	* mule/ccl.el (ccl-compile-unicode-to-mule):
+	* mule/ccl.el (ccl-compile-lookup-integer):
+	* mule/ccl.el (ccl-compile-lookup-character):
+	* mule/ccl.el (ccl-compile-map-multiple):
+	* mule/ccl.el (ccl-compile-map-single):
+	* mule/devan-util.el (devanagari-compose-to-one-glyph):
+	* mule/devan-util.el (devanagari-composition-component):
+	* mule/mule-cmds.el (finish-set-language-environment):
+	* mule/viet-util.el:
+	* mule/viet-util.el (viet-encode-viscii-char):
+	* multicast.el (open-multicast-group):
+	* newcomment.el (comment-quote-nested):
+	* newcomment.el (comment-region):
+	* newcomment.el (comment-dwim):
+	* regexp-opt.el (regexp-opt-group):
+	* replace.el (map-query-replace-regexp):
+	* specifier.el (derive-device-type-from-tag-set):
+	* subr.el (skip-chars-quote):
+	* test-harness.el (test-harness-from-buffer):
+	* test-harness.el (batch-test-emacs):
+	* wid-edit.el (widget-choice-action):
+	* wid-edit.el (widget-symbol-prompt-internal):
+	* wid-edit.el (widget-color-action):
+	* window-xemacs.el (push-window-configuration):
+	* window-xemacs.el (pop-window-configuration):
+	* window.el (quit-window):
+	* x-compose.el (electric-diacritic):
+	It's better style, and cheaper (often one assembler instruction
+	vs. a C funcall in the byte code), to use `eql' instead of `='
+	when it's clear what numerical type a given result will be. Change
+	much of our code to do this, with the help of a byte-compiler
+	change (not comitted) that looked for calls to #'length (which
+	always returns an integer) in its args.
+
 2011-03-08  Aidan Kehoe  <kehoea@parhasard.net>
 
 	* format.el (format-delq-cons): Removed.
--- a/lisp/buff-menu.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/buff-menu.el	Tue Mar 08 23:41:52 2011 +0000
@@ -643,8 +643,8 @@
 			   (if (memq files-only '(t nil))
 			       #'(lambda (b)
 				   (let ((n (buffer-name b)))
-				     (cond ((and (/= 0 (length n))
-						 (= (aref n 0) ?\ ))
+				     (cond ((and (not (eql 0 (length n)))
+						 (eql (aref n 0) ?\ ))
 					    ;;don't mention if starts with " "
 					    nil)
 					   (files-only
--- a/lisp/byte-optimize.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/byte-optimize.el	Tue Mar 08 23:41:52 2011 +0000
@@ -823,7 +823,7 @@
       (nth 1 form)
     (byte-compile-warn "identity called with %d arg%s, but requires 1"
 		       (length (cdr form))
-		       (if (= 1 (length (cdr form))) "" "s"))
+		       (if (eql 1 (length (cdr form))) "" "s"))
     form))
 
 (defun byte-optimize-car (form)
@@ -1021,7 +1021,7 @@
 		 ;; Don't make a double negative;
 		 ;; instead, take away the one that is there.
 		 (if (and (consp clause) (memq (car clause) '(not null))
-			  (= (length clause) 2)) ; (not xxxx) or (not (xxxx))
+			  (eql (length clause) 2)) ; (not xxxx) or (not (xxxx))
 		     (nth 1 clause)
 		   (list 'not clause))
 		 (if (nthcdr 4 form)
@@ -1163,7 +1163,7 @@
 
 (put 'nth 'byte-optimizer 'byte-optimize-nth)
 (defun byte-optimize-nth (form)
-  (if (and (= (safe-length form) 3) (memq (nth 1 form) '(0 1)))
+  (if (and (eql (safe-length form) 3) (memq (nth 1 form) '(0 1)))
       (list 'car (if (zerop (nth 1 form))
 		     (nth 2 form)
 		   (list 'cdr (nth 2 form))))
@@ -1171,7 +1171,7 @@
 
 (put 'nthcdr 'byte-optimizer 'byte-optimize-nthcdr)
 (defun byte-optimize-nthcdr (form)
-  (if (and (= (safe-length form) 3) (not (memq (nth 1 form) '(0 1 2))))
+  (if (and (eql (safe-length form) 3) (not (memq (nth 1 form) '(0 1 2))))
       (byte-optimize-predicate form)
     (let ((count (nth 1 form)))
       (setq form (nth 2 form))
--- a/lisp/bytecomp.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/bytecomp.el	Tue Mar 08 23:41:52 2011 +0000
@@ -3220,7 +3220,7 @@
   (when (memq 'subr-callargs byte-compile-warnings)
     (byte-compile-warn "%s called with %d arg%s, but requires %s"
 		       (car form) (length (cdr form))
-		       (if (= 1 (length (cdr form))) "" "s") n)))
+		       (if (eql 1 (length (cdr form))) "" "s") n)))
 
 (defun byte-compile-subr-wrong-args (form n)
   (byte-compile-warn-wrong-args form n)
@@ -3345,7 +3345,7 @@
 ;; XEmacs: used for functions that have a different opcode in v19 than v20.
 ;; this includes `eq', `equal', and other old-ified functions.
 (defun byte-compile-two-args-19->20 (form)
-  (if (not (= (length form) 3))
+  (if (not (eql (length form) 3))
       (byte-compile-subr-wrong-args form 2)
     (byte-compile-form (car (cdr form)))  ;; Push the arguments
     (byte-compile-form (nth 2 form))
@@ -3446,7 +3446,7 @@
   (let* ((args (cdr form))
 	 (nargs (length args)))
     (cond
-     ((= nargs 0)
+     ((eql nargs 0)
       (byte-compile-constant nil))
      ((< nargs 5)
       (mapc 'byte-compile-form args)
@@ -3696,7 +3696,7 @@
   (let ((len (length form)))
     (cond ((> len 3)
 	   (byte-compile-subr-wrong-args form "0-2"))
-	  ((or (= len 3) (not (byte-compile-constp (nth 1 form))))
+	  ((or (eql len 3) (not (byte-compile-constp (nth 1 form))))
 	   (byte-compile-normal-call form))
 	  (t
 	   (byte-compile-form
@@ -3766,8 +3766,7 @@
   (let* ((args (cdr form))
 	 (nargs (length args))
 	 (var (car args)))
-    (when (and (= (safe-length var) 2)
-	       (eq (car var) 'quote))
+    (when (and (eql (safe-length var) 2) (eq (car var) 'quote))
       (let ((sym (nth 1 var)))
 	(cond
 	 ((not (symbolp sym))
@@ -3786,7 +3785,7 @@
 	 (t
 	  (byte-compile-warn "assignment to free variable %s" sym)
 	  (push sym byte-compile-free-assignments)))))
-    (if (= nargs 2)
+    (if (eql nargs 2)
 	;; now emit a normal call to set-default
 	(byte-compile-normal-call form)
       (byte-compile-subr-wrong-args form 2))))
@@ -3923,7 +3922,7 @@
   (byte-compile-body form t))
 
 (defun byte-compile-values (form)
-  (if (= 2 (length form))
+  (if (eql 2 (length form))
       (if (byte-compile-constp (second form))
 	  (byte-compile-form-do-effect (second form))
 	;; #'or compiles to bytecode, #'values doesn't:
@@ -3931,7 +3930,7 @@
     (byte-compile-normal-call form)))
 
 (defun byte-compile-values-list (form)
-  (if (and (= 2 (length form))
+  (if (and (eql 2 (length form))
            (or (null (second form))
                (and (consp (second form))
                     (eq (car (second form))
@@ -4110,7 +4109,7 @@
 ;; anyway).
 
 (defun byte-compile-integerp (form)
-  (if (/= 2 (length form))
+  (if (not (eql (length form) 2))
       (byte-compile-subr-wrong-args form 1)
     (let ((donetag (byte-compile-make-tag))
 	  (wintag (byte-compile-make-tag))
@@ -4338,7 +4337,7 @@
              :test #'equal)))
 
 (defun byte-compile-multiple-value-list-internal (form)
-  (if (/= 4 (length form))
+  (if (not (eql 4 (length form)))
       (progn
         (byte-compile-warn-wrong-args form 3)
         (byte-compile-normal-call
@@ -4360,7 +4359,7 @@
   ;; form, it provokes an invalid-function error instead (or at least it
   ;; should; there's a kludge around for the moment in eval.c that avoids
   ;; that, but this file should not assume that that will always be there).
-  (if (/= 2 (length (cdr form)))
+  (if (not (eql 2 (length (cdr form))))
       (progn
         (byte-compile-warn-wrong-args form 2)
         (byte-compile-normal-call
--- a/lisp/cl-macs.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/cl-macs.el	Tue Mar 08 23:41:52 2011 +0000
@@ -428,7 +428,7 @@
 	  (or (eq p args) (setq minarg (list 'cdr minarg)))
 	  (setq p (cdr p)))
 	(if (memq (car p) '(nil &aux))
-	    (setq minarg (list '= (list 'length restarg)
+	    (setq minarg (list 'eql (list 'length restarg)
 			       (length (ldiff args p)))
 		  exactarg (not (eq args p)))))
       (while (and args (not (memq (car args) lambda-list-keywords)))
@@ -1265,7 +1265,7 @@
 		      (seq (cl-pop2 args))
 		      (temp-seq (gensym))
 		      (temp-idx (if (eq (car args) 'using)
-				    (if (and (= (length (cadr args)) 2)
+				    (if (and (eql (length (cadr args)) 2)
 					     (eq (caadr args) 'index))
 					(cadr (cl-pop2 args))
 				      (error "Bad `using' clause"))
@@ -1296,7 +1296,7 @@
 		(or (memq (car args) '(in of)) (error "Expected `of'"))
 		(let* ((table (cl-pop2 args))
 		       (other (if (eq (car args) 'using)
-				  (if (and (= (length (cadr args)) 2)
+				  (if (and (eql (length (cadr args)) 2)
 					   (memq (caadr args) hash-types)
 					   (not (eq (caadr args) word)))
 				      (cadr (cl-pop2 args))
@@ -1352,7 +1352,7 @@
 		(let* ((map (cl-pop2 args))
 		       other-word
 		       (other (if (eq (car args) 'using)
-				  (if (and (= (length (cadr args)) 2)
+				  (if (and (eql (length (cadr args)) 2)
 					   (memq (setq other-word (caadr args))
 						 key-types)
 					   (not (eq (caadr args) word)))
@@ -1880,7 +1880,7 @@
 Returns the value given by the last element of BODY."
   (if (null syms)
       `(progn ,form ,@body)
-    (if (= 1 (length syms))
+    (if (eql 1 (length syms))
         ;; Code written to deal with other "implementations" of multiple
         ;; values may have a one-element SYMS.
         `(let ((,(car syms) ,form))
@@ -1907,7 +1907,7 @@
   (if (null syms)
       ;; Never return multiple values from multiple-value-setq:
       (and form `(values ,form))
-    (if (= 1 (length syms))
+    (if (eql 1 (length syms))
         `(setq ,(car syms) ,form)
       (let ((temp (gensym)))
         `(let* ((,temp (multiple-value-list-internal 0 ,(length syms) ,form)))
@@ -2434,7 +2434,7 @@
 	       (or (and method
 			(let ((cl-macro-environment env))
 			  (setq method (apply method (cdr place))))
-			(if (and (consp method) (= (length method) 5))
+			(if (and (consp method) (eql (length method) 5))
 			    method
 			  (error "Setf-method for %s returns malformed method"
 				 func)))
--- a/lisp/cmdloop.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/cmdloop.el	Tue Mar 08 23:41:52 2011 +0000
@@ -148,7 +148,7 @@
     (message nil)
     (ding nil (cond ((eq etype 'undefined-keystroke-sequence)
 		     (if (and (vectorp (nth 1 error-object))
-			      (/= 0 (length (nth 1 error-object)))
+			      (not (eql 0 (length (nth 1 error-object))))
 			      (button-event-p (aref (nth 1 error-object) 0)))
 			 'undefined-click
 		       'undefined-key))
@@ -470,7 +470,7 @@
                           (single-key-description event))
                  (ding nil 'y-or-n-p)
                  (discard-input)
-                 (if (= (length pre) 0)
+                 (if (eql (length pre) 0)
                      (setq pre (gettext "Please answer y or n.  ")))))))
       yn)))
 
--- a/lisp/coding.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/coding.el	Tue Mar 08 23:41:52 2011 +0000
@@ -378,7 +378,7 @@
 					(< (length result) count))
 			      (push (if stringp (1- begin) begin) result)
 			      (incf begin))
-			    (when (= (length result) count)
+			    (when (eql (length result) count)
 			      (return-from worked-it-all-out result)))
 			ranges)
 		     (map-range-table
--- a/lisp/cus-edit.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/cus-edit.el	Tue Mar 08 23:41:52 2011 +0000
@@ -870,7 +870,7 @@
 	;; under point:
 	(let ((choice (completing-read "Customize face: (default all) "
 				       obarray 'find-face)))
-	  (if (zerop (length choice))
+	  (if (eql (length choice) 0)
 	      nil
 	    (list (intern choice))))
       (cond ((symbolp faces)
@@ -884,7 +884,7 @@
 				      (list (symbol-name face) face))
 				    faces)
 			    nil t)))
-	       (if (zerop (length choice))
+	       (if (eql (length choice) 0)
 		   (list faces)
 		 (list (intern choice)))))))))
 
@@ -1184,7 +1184,7 @@
   (widget-insert "\n")
   (message "Creating customization items...")
   (setq custom-options
-	(if (= (length options) 1)
+	(if (eql (length options) 1)
 	    (mapcar (lambda (entry)
 		      (widget-create (nth 1 entry)
 				     :documentation-shown t
@@ -2985,7 +2985,7 @@
 					 (face-list))
 				 nil nil nil
 				 'face-history)))
-    (unless (zerop (length answer))
+    (unless (eql (length answer) 0)
       (widget-value-set widget (intern answer))
       (widget-apply widget :notify widget event)
       (widget-setup))))
@@ -3174,7 +3174,7 @@
 	   (insert " " tag "\n")
 	   (widget-put widget :buttons buttons))
 	  ((and (eq custom-buffer-style 'tree)
-		(zerop (length members)))
+		(eql (length members) 0))
 	   (custom-browse-insert-prefix prefix)
 	   (insert "[ ]-- ")
 	   ;; (widget-glyph-insert nil "[ ]" "empty")
@@ -3187,7 +3187,7 @@
 	  ((eq custom-buffer-style 'tree)
 	   (custom-browse-insert-prefix prefix)
 	   (custom-load-widget widget)
-	   (if (zerop (length members))
+	   (if (eql (length members) 0)
 	       (progn
 		 (custom-browse-insert-prefix prefix)
 		 (insert "[ ]-- ")
--- a/lisp/descr-text.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/descr-text.el	Tue Mar 08 23:41:52 2011 +0000
@@ -767,8 +767,8 @@
 						(line-end-position)) ";")
 				       :test 'equal))))
 	      ;; The length depends on whether the last field was empty.
-	      (unless (or (= 13 (length fields))
-			  (= 14 (length fields)))
+	      (unless (or (eql 13 (length fields))
+			  (eql 14 (length fields)))
 		(error 'invalid-argument
                        (format "Invalid contents in %s"
                                describe-char-unicodedata-file)))
--- a/lisp/dialog-gtk.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/dialog-gtk.el	Tue Mar 08 23:41:52 2011 +0000
@@ -256,13 +256,13 @@
 		    (setq length (length button))
 
 		    (cond
-		     ((= length 1)	; [ "name" ]
+		     ((eql length 1)	; [ "name" ]
 		      (setq callback nil
 			    activep nil))
-		     ((= length 2)	; [ "name" callback ]
+		     ((eql length 2)	; [ "name" callback ]
 		      (setq callback (aref button 1)
 			    activep t))
-		     ((and (or (= length 3) (= length 4))
+		     ((and (or (eql length 3) (eql length 4))
 			   (not (keywordp (aref button 2))))
 		      ;; [ "name" callback active-p ] or
 		      ;; [ "name" callback active-p suffix ]
--- a/lisp/dragdrop.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/dragdrop.el	Tue Mar 08 23:41:52 2011 +0000
@@ -214,7 +214,7 @@
 		   ((eq (car object) 'dragdrop-MIME) "MIME")
 		   (t "UNKNOWN"))
 	     (length (cdr object))
-	     (if (= (length (cdr object)) 1) "element" "elements")))
+	     (if (eql (length (cdr object)) 1) "element" "elements")))
     (let ((i 1)
 	  (data (cdr object)))
       (while (not (eq data ()))
@@ -280,7 +280,7 @@
 	   (while (not (eq ldata ()))
 	     (setq data (car ldata))
 	     (if (and (listp data)
-		      (= (length data) 3)
+		      (eql (length data) 3)
 		      (listp (car data))
 		      (stringp (caar data))
 		      (string= (caar data) "text/plain")
@@ -308,7 +308,7 @@
 			(and (featurep 'tm-view)
 			     (declare-fboundp (mime/viewer-mode buf))))
 		       ((and (listp data)
-			     (= (length data) 3))
+			     (eql (length data) 3))
 			;; change the internal content-type representation to the
 			;; way tm does it ("content/type" (key . value)*)
 			;; but for now list will do the job
--- a/lisp/easymenu.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/easymenu.el	Tue Mar 08 23:41:52 2011 +0000
@@ -194,7 +194,7 @@
 ;  	   (default-value 'mode-popup-menu) easy-menu-all-popups)
   (when (featurep 'menubar)
     ;; Save the existing mode-popup-menu, if it's been changed.
-    (when (and (zerop (length easy-menu-all-popups))
+    (when (and (eql (length easy-menu-all-popups) 0)
 	       (not (equal (default-value 'mode-popup-menu) mode-popup-menu)))
       (push mode-popup-menu easy-menu-all-popups))
     ;; Add the menu to our list of all the popups for the buffer. 
@@ -202,7 +202,7 @@
     ;; If there are multiple popup menus available, make the popup menu
     ;; normally shown with button-3 a menu of them. If there is just one,
     ;; make that button show it, and no super-menu.
-    (setq mode-popup-menu (if (= 1 (length easy-menu-all-popups))
+    (setq mode-popup-menu (if (eql 1 (length easy-menu-all-popups))
 			      (car easy-menu-all-popups)
 			    (cons (easy-menu-title)
 				(reverse easy-menu-all-popups))))
@@ -229,13 +229,13 @@
      ;; If there are multiple popup menus available, make the popup menu
      ;; normally shown with button-3 a menu of them. If there is just one,
      ;; make that button show it, and no super-menu.
-     mode-popup-menu (if (= 1 (length easy-menu-all-popups))
+     mode-popup-menu (if (eql 1 (length easy-menu-all-popups))
 			 (car easy-menu-all-popups)
 		       (cons (easy-menu-title)
 			     (reverse easy-menu-all-popups))))
     ;; If we've just set mode-popup-menu to an empty menu, change that menu
     ;; to its default value (without intervention from easy-menu).
-    (if (zerop (length easy-menu-all-popups))
+    (if (eql (length easy-menu-all-popups) 0)
 	(setq mode-popup-menu (default-value 'mode-popup-menu)))
     (and current-menubar
 	 (assoc (car menu) current-menubar)
--- a/lisp/faces.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/faces.el	Tue Mar 08 23:41:52 2011 +0000
@@ -59,7 +59,7 @@
 
 (defun read-face-name (prompt)
   (let (face)
-    (while (= (length face) 0) ; nil or ""
+    (while (eql (length face) 0) ; nil or ""
       (setq face (completing-read prompt
 				  (mapcar (lambda (x) (list (symbol-name x)))
 					  (face-list))
@@ -2039,14 +2039,14 @@
 						 '(".xbm" "")))))
 			(and file
 			     `[xbm :file ,file])))
-		     ((and (listp pixmap) (= (length pixmap) 3))
+		     ((and (listp pixmap) (eql (length pixmap) 3))
 		      `[xbm :data ,pixmap])
 		     (t nil))))
       ;; We're signaling a continuable error; let's make sure the
       ;; function `stipple-pixmap-p' at least exists.
       (flet ((stipple-pixmap-p (pixmap)
 	       (or (stringp pixmap)
-		   (and (listp pixmap) (= (length pixmap) 3)))))
+		   (and (listp pixmap) (eql (length pixmap) 3)))))
 	(setq pixmap (signal 'wrong-type-argument
 			     (list 'stipple-pixmap-p pixmap)))))
     (check-type frame (or null frame))
--- a/lisp/files.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/files.el	Tue Mar 08 23:41:52 2011 +0000
@@ -4555,7 +4555,7 @@
 	  (and (car pair)
 	       (string-match "\\`/:" (car pair))
 	       (setcar pair
-		       (if (= (length (car pair)) 2)
+		       (if (eql (length (car pair)) 2)
 			   "/"
 			 (substring (car pair) 2)))))
 	(setq file-arg-indices (cdr file-arg-indices))))
--- a/lisp/font.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/font.el	Tue Mar 08 23:41:52 2011 +0000
@@ -428,7 +428,7 @@
   (cond
    ((null args)
     (error "Wrong number of arguments to font-combine-fonts"))
-   ((= (length args) 1)
+   ((eql (length args) 1)
     (car args))
    (t
     (let ((retval (font-combine-fonts-internal (nth 0 args) (nth 1 args))))
@@ -990,7 +990,7 @@
 ;;; ###autoload
 (defun font-set-face-font (&optional face font &rest args)
   (cond
-   ((and (vectorp font) (= (length font) 12))
+   ((and (vectorp font) (eql (length font) 12))
     (let ((font-name (font-create-name font)))
       (set-face-property face 'font-specification font)
       (cond
@@ -1177,28 +1177,28 @@
 	r g b str)
   (cond ((string-match "^#[0-9a-f]+$" color)
 	 (cond
-	  ((= (length color) 4)
+	  ((eql (length color) 4)
 	   (setq r (font-hex-string-to-number (substring color 1 2))
 		 g (font-hex-string-to-number (substring color 2 3))
 		 b (font-hex-string-to-number (substring color 3 4))
 		 r (* r 4096)
 		 g (* g 4096)
 		 b (* b 4096)))
-	  ((= (length color) 7)
+	  ((eql (length color) 7)
 	   (setq r (font-hex-string-to-number (substring color 1 3))
 		 g (font-hex-string-to-number (substring color 3 5))
 		 b (font-hex-string-to-number (substring color 5 7))
 		 r (* r 256)
 		 g (* g 256)
 		 b (* b 256)))
-	  ((= (length color) 10)
+	  ((eql (length color) 10)
 	   (setq r (font-hex-string-to-number (substring color 1 4))
 		 g (font-hex-string-to-number (substring color 4 7))
 		 b (font-hex-string-to-number (substring color 7 10))
 		 r (* r 16)
 		 g (* g 16)
 		 b (* b 16)))
-	  ((= (length color) 13)
+	  ((eql (length color) 13)
 	   (setq r (font-hex-string-to-number (substring color 1 5))
 		 g (font-hex-string-to-number (substring color 5 9))
 		 b (font-hex-string-to-number (substring color 9 13))))
@@ -1233,7 +1233,7 @@
 
 (defun font-rgb-color-p (obj)
   (or (and (vectorp obj)
-	   (= (length obj) 4)
+	   (eql (length obj) 4)
 	   (eq (aref obj 0) 'rgb))))
 
 (defun font-rgb-color-red (obj) (aref obj 1))
@@ -1257,11 +1257,11 @@
       (list (font-rgb-color-red color)
 	    (font-rgb-color-green color)
 	    (font-rgb-color-blue color)))
-     ((and (vectorp color) (= 3 (length color)))
+     ((and (vectorp color) (eql 3 (length color)))
       (list (aref color 0) (aref color 1) (aref color 2)))
-     ((and (listp color) (= 3 (length color)) (floatp (car color)))
+     ((and (listp color) (eql 3 (length color)) (floatp (car color)))
       (mapcar #'(lambda (x) (* x 65535)) color))
-     ((and (listp color) (= 3 (length color)))
+     ((and (listp color) (eql 3 (length color)))
       color)
      ((or (string-match "^#" color)
 	  (string-match "^rgb:" color))
--- a/lisp/gnuserv.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/gnuserv.el	Tue Mar 08 23:41:52 2011 +0000
@@ -468,7 +468,7 @@
       (select-frame frame)
       (setq gnuserv-current-client nil)
       ;; If the device was created by this client, push it to the list.
-      (and (/= old-device-num (length (device-list)))
+      (and (not (eql old-device-num (length (device-list))))
 	   (push device gnuserv-devices))
       (and (frame-iconified-p frame)
 	   (deiconify-frame frame))
--- a/lisp/help.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/help.el	Tue Mar 08 23:41:52 2011 +0000
@@ -350,7 +350,7 @@
     ;; If the key typed was really a menu selection, grab the form out
     ;; of the event object and intuit the function that would be called,
     ;; and describe that instead.
-    (if (and (vectorp key) (= 1 (length key))
+    (if (and (vectorp key) (eql 1 (length key))
 	     (or (misc-user-event-p (aref key 0))
 		 (eq (car-safe (aref key 0)) 'menu-selection)))
 	(let ((event (aref key 0)))
@@ -1230,7 +1230,7 @@
       (setq args (match-string 1 doc))
       (setq doc (substring doc 0 (match-beginning 0)))
       (and args (setq args (replace-in-string args "[ ]*\\\\\n[ \t]*" " " t)))
-      (and (zerop (length doc)) (setq doc (gettext "not documented"))))
+      (and (eql 0 (length doc)) (setq doc (gettext "not documented"))))
     (cons doc args)))
 
 (defun function-documentation (function &optional strip-arglist)
--- a/lisp/info.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/info.el	Tue Mar 08 23:41:52 2011 +0000
@@ -590,7 +590,7 @@
 	   (equal (nth 1 p) "info")
 	   (not Info-standalone)
 	   (setq Info-standalone t)
-	   (= (length p) 3)
+	   (eql (length p) 3)
 	   (not (string-match "^-" (nth 2 p)))
 	   (setq file (nth 2 p))
 	   (setq command-line-args-left nil))
--- a/lisp/isearch-mode.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/isearch-mode.el	Tue Mar 08 23:41:52 2011 +0000
@@ -713,7 +713,7 @@
 nonincremental search instead via `isearch-edit-string'."
   (interactive)
   (if (and (or search-nonincremental-instead executing-kbd-macro)
-	   (= 0 (length isearch-string)))
+	   (eql 0 (length isearch-string)))
       (let ((isearch-nonincremental t)
 	    ;; Highlighting only gets in the way of nonincremental
 	    ;; search.
@@ -827,7 +827,7 @@
 		  isearch-word isearch-new-word))
 
 	  ;; Empty isearch-string means use default.
-	  (if (= 0 (length isearch-string))
+	  (if (eql 0 (length isearch-string))
 	      (setq isearch-string (or (car (if isearch-regexp
 						regexp-search-ring
 					      search-ring))
@@ -1124,7 +1124,7 @@
 	(while (and (> idx 0)
 		    (eq (aref isearch-string (1- idx)) ?\\))
 	  (setq idx (1- idx)))
-	(when (= (mod (- (length isearch-string) idx) 2) 0)
+	(when (eql (mod (- (length isearch-string) idx) 2) 0)
 	  (setq isearch-adjusted t)
 	  ;; Get the isearch-other-end from before the last search.
 	  ;; We want to start from there,
@@ -1316,7 +1316,7 @@
       ;; isearch-string stays the same
       t)
      ((or completion ; not nil, must be a string
-	  (= 0 (length isearch-string))) ; shouldn't have to say this
+	  (eql 0 (length isearch-string))) ; shouldn't have to say this
       (if (equal completion isearch-string)  ;; no extension?
 	  (progn
 	    (if completion-auto-help
--- a/lisp/ldap.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/ldap.el	Tue Mar 08 23:41:52 2011 +0000
@@ -401,7 +401,7 @@
 
 (defun ldap-encode-country-string (str)
   ;; We should do something useful here...
-  (if (not (= 2 (length str)))
+  (if (not (eql 2 (length str)))
       (error "Invalid country string: %s" str)))
 
 (defun ldap-decode-string (str)
--- a/lisp/minibuf.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/minibuf.el	Tue Mar 08 23:41:52 2011 +0000
@@ -1821,10 +1821,10 @@
 	     (completion-ignore-case (file-system-ignore-case-p
 				      (or dir default-directory)))
              (env (substring string
-                             (cond ((= start (length string))
+                             (cond ((eql start (length string))
                                     ;; "...$"
                                     start)
-                                   ((= (aref string start) ?{)
+                                   ((eql (aref string start) ?{)
                                     ;; "...${..."
                                     (1+ start))
                                    (t
@@ -2211,7 +2211,7 @@
   "Read a non-nil coding-system from the minibuffer.
 Prompt with string PROMPT."
   (let ((retval (intern "")))
-    (while (= 0 (length (symbol-name retval)))
+    (while (eql 0 (length (symbol-name retval)))
       (setq retval (intern (completing-read prompt obarray
 					    'find-coding-system
 					    t))))
@@ -2347,7 +2347,7 @@
 				   (single-key-description event))
 			  (ding nil 'y-or-n-p)
 			  (discard-input)
-			  (if (= (length pre) 0)
+			  (if (eql (length pre) 0)
 			      (setq pre (format "Please answer %s.  "
 						;; 17 parens!  a record in
 						;; our lisp code.
--- a/lisp/mouse.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/mouse.el	Tue Mar 08 23:41:52 2011 +0000
@@ -1772,7 +1772,8 @@
 		 ;; left window side has slipped (right side cannot be
 		 ;; moved any further to the right, so enlarge-window
 		 ;; plays bad games with the left edge.
-		 (if (or (/= (count-windows) (length old-edges-all-windows))
+		 (if (or (not (eql (count-windows)
+				   (length old-edges-all-windows)))
 			 (/= old-left (car (window-pixel-edges window)))
 			 ;; This check is very hairy. We allow any number
 			 ;; of left edges to change, but only to the same
--- a/lisp/mule/ccl.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/mule/ccl.el	Tue Mar 08 23:41:52 2011 +0000
@@ -473,7 +473,7 @@
 ;; If READ-FLAG is non-nil, this statement has the form
 ;; `(read-if (REG OPERATOR ARG) TRUE-PART FALSE-PART)'.
 (defun ccl-compile-if (cmd &optional read-flag)
-  (if (and (/= (length cmd) 3) (/= (length cmd) 4))
+  (if (and (not (<= 3 (length cmd) 4)))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (let ((condition (nth 1 cmd))
 	(true-cmds (nth 2 cmd))
@@ -646,7 +646,7 @@
 
 ;; Compile BREAK statement.
 (defun ccl-compile-break (cmd)
-  (if (/= (length cmd) 1)
+  (if (not (eql (length cmd) 1))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (if (null ccl-loop-head)
       (error "CCL: No outer loop: %s" cmd))
@@ -656,7 +656,7 @@
 
 ;; Compile REPEAT statement.
 (defun ccl-compile-repeat (cmd)
-  (if (/= (length cmd) 1)
+  (if (not (eql (length cmd) 1))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (if (null ccl-loop-head)
       (error "CCL: No outer loop: %s" cmd))
@@ -665,7 +665,7 @@
 
 ;; Compile WRITE-REPEAT statement.
 (defun ccl-compile-write-repeat (cmd)
-  (if (/= (length cmd) 2)
+  (if (not (eql (length cmd) 2))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (if (null ccl-loop-head)
       (error "CCL: No outer loop: %s" cmd))
@@ -783,7 +783,7 @@
 
 ;; Compile CALL statement.
 (defun ccl-compile-call (cmd)
-  (if (/= (length cmd) 2)
+  (if (not (eql (length cmd) 2))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (if (not (symbolp (nth 1 cmd)))
       (error "CCL: Subroutine should be a symbol: %s" cmd))
@@ -793,14 +793,14 @@
 
 ;; Compile END statement.
 (defun ccl-compile-end (cmd)
-  (if (/= (length cmd) 1)
+  (if (not (eql (length cmd) 1))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (ccl-embed-code 'end 0 0)
   t)
 
 ;; Compile read-multibyte-character
 (defun ccl-compile-read-multibyte-character (cmd)
-  (if (/= (length cmd) 3)
+  (if (not (eql (length cmd) 3))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (let ((RRR (nth 1 cmd))
 	(rrr (nth 2 cmd)))
@@ -811,7 +811,7 @@
 
 ;; Compile write-multibyte-character
 (defun ccl-compile-write-multibyte-character (cmd)
-  (if (/= (length cmd) 3)
+  (if (not (eql (length cmd) 3))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (let ((RRR (nth 1 cmd))
 	(rrr (nth 2 cmd)))
@@ -822,7 +822,7 @@
 
 ;; Compile translate-character
 (defun ccl-compile-translate-character (cmd)
-  (if (/= (length cmd) 4)
+  (if (not (eql (length cmd) 4))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (let ((Rrr (nth 1 cmd))
 	(RRR (nth 2 cmd))
@@ -840,7 +840,7 @@
 
 ;; Compile mule-to-unicode
 (defun ccl-compile-mule-to-unicode (cmd)
-  (if (/= (length cmd) 3)
+  (if (not (eql (length cmd) 3))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (let ((RRR (nth 1 cmd))
 	(rrr (nth 2 cmd)))
@@ -852,7 +852,7 @@
 ;; Given a Unicode code point in register rrr, write the charset ID of the
 ;; corresponding character in RRR, and the Mule-CCL form of its code in rrr.
 (defun ccl-compile-unicode-to-mule (cmd)
-  (if (/= (length cmd) 3)
+  (if (not (eql (length cmd) 3))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (let ((rrr (nth 1 cmd))
 	(RRR (nth 2 cmd)))
@@ -863,7 +863,7 @@
 
 ;; Compile lookup-integer
 (defun ccl-compile-lookup-integer (cmd)
-  (if (/= (length cmd) 4)
+  (if (not (eql (length cmd) 4))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (let ((Rrr (nth 1 cmd))
 	(RRR (nth 2 cmd))
@@ -883,7 +883,7 @@
 
 ;; Compile lookup-character
 (defun ccl-compile-lookup-character (cmd)
-  (if (/= (length cmd) 4)
+  (if (not (eql (length cmd) 4))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (let ((Rrr (nth 1 cmd))
 	(RRR (nth 2 cmd))
@@ -906,7 +906,7 @@
   nil)
 
 (defun ccl-compile-map-multiple (cmd)
-  (if (/= (length cmd) 4)
+  (if (not (eql (length cmd) 4))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (let (func arg)
     (setq func
@@ -932,7 +932,7 @@
   nil)
 
 (defun ccl-compile-map-single (cmd)
-  (if (/= (length cmd) 4)
+  (if (not (eql (length cmd) 4))
       (error "CCL: Invalid number of arguments: %s" cmd))
   (let ((RRR (nth 1 cmd))
 	(rrr (nth 2 cmd))
@@ -1562,4 +1562,4 @@
 
 (provide 'ccl)
 
-;; ccl.el ends here
\ No newline at end of file
+;; ccl.el ends here
--- a/lisp/mule/devan-util.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/mule/devan-util.el	Tue Mar 08 23:41:52 2011 +0000
@@ -1078,7 +1078,7 @@
     ;; Before applying compose-chars, convert glyphs to
     ;; 1-column width if possible.
     (setq cmp-glyph-list (devanagari-wide-to-narrow cmp-glyph-list))
-    (if (= (length cmp-glyph-list) 1) (char-to-string (car cmp-glyph-list))
+    (if (eql (length cmp-glyph-list) 1) (char-to-string (car cmp-glyph-list))
       (apply 'compose-chars cmp-glyph-list))))
 
 (defun devanagari-composition-component (string &optional start end)
--- a/lisp/mule/mule-cmds.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/mule/mule-cmds.el	Tue Mar 08 23:41:52 2011 +0000
@@ -779,7 +779,7 @@
      #'(lambda (key entry)
          (setq string (decode-coding-string (string entry)
                                             invalid-sequence-coding-system))
-         (when (= 1 (length string))
+         (when (eql 1 (length string))
 	   ;; Treat Unicode error sequence chars as the octets
 	   ;; corresponding to those on disk:
 	   (setq unicode-error-lookup
--- a/lisp/mule/viet-util.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/mule/viet-util.el	Tue Mar 08 23:41:52 2011 +0000
@@ -45,8 +45,8 @@
   (if (eq char ?~)
       char
     (setq char (encode-coding-string char 'viscii))
-    (if (and (= 1 (length char))
-	     (not (eq (aref char 0) ?~)))
+    (if (and (eql 1 (length char))
+	     (not (eql (aref char 0) ?~)))
 	(aref char 0))))
 
 ;; VIQR is a menmonic encoding specification for Vietnamese.
--- a/lisp/multicast.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/multicast.el	Tue Mar 08 23:41:52 2011 +0000
@@ -87,8 +87,8 @@
     ;; We check only the general form of the multicast address.
     ;; The rest will be handled by the internal function.
     (string-match "^\\([0-9\\.]+\\)/\\([0-9]+\\)/\\([0-9]+\\)$" address)
-    (and (not (and (= (match-beginning 0) 0)
-		   (= (match-end 0) (length address))))
+    (and (not (and (eql (match-beginning 0) 0)
+		   (eql (match-end 0) (length address))))
 	 (error "malformed multicast address: %s" address))
     (and (not (setq dest (match-string 1 address)))
 	 (error "invalid destination specification."))
--- a/lisp/newcomment.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/newcomment.el	Tue Mar 08 23:41:52 2011 +0000
@@ -284,7 +284,7 @@
 	(goto-char (match-beginning 0))
 	(forward-char 1)
 	(if unp (delete-char 1) (insert "\\"))
-	(when (= (length ce) 1)
+	(when (eql (length ce) 1)
 	  ;; If the comment-end is a single char, adding a \ after that
 	  ;; "first" char won't deactivate it, so we turn such a CE
 	  ;; into !CS.  I.e. for pascal, we turn } into !{
@@ -922,7 +922,7 @@
      ((consp arg) (uncomment-region beg end))
      ((< numarg 0) (uncomment-region beg end (- numarg)))
      (t
-      (setq numarg (if (and (null arg) (= (length comment-start) 1))
+      (setq numarg (if (and (null arg) (eql (length comment-start) 1))
 		       add (1- numarg)))
       (comment-region-internal
        beg end
@@ -979,7 +979,7 @@
 	;; specified, calling comment-kill is not very clever.
 	(if arg (comment-kill (and (integerp arg) arg)) (comment-indent))
       (let ((add (if arg (prefix-numeric-value arg)
-		   (if (= (length comment-start) 1) comment-add 0))))
+		   (if (eql (length comment-start) 1) comment-add 0))))
 	;; Some modes insist on keeping column 0 comment in column 0
 	;; so we need to move away from it before inserting the comment.
 	(indent-according-to-mode)
--- a/lisp/regexp-opt.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/regexp-opt.el	Tue Mar 08 23:41:52 2011 +0000
@@ -175,23 +175,23 @@
     (cond
      ;;
      ;; If there are no strings, just return the empty string.
-     ((= (length strings) 0)
+     ((eql (length strings) 0)
       "")
      ;;
      ;; If there is only one string, just return it.
-     ((= (length strings) 1)
-      (if (= (length (car strings)) 1)
+     ((eql (length strings) 1)
+      (if (eql (length (car strings)) 1)
 	  (concat open-charset (regexp-quote (car strings)) close-charset)
 	(concat open-group (regexp-quote (car strings)) close-group)))
      ;;
      ;; If there is an empty string, remove it and recurse on the rest.
-     ((= (length (car strings)) 0)
+     ((eql (length (car strings)) 0)
       (concat open-charset
 	      (regexp-opt-group (cdr strings) t t) "?"
 	      close-charset))
      ;;
      ;; If all are one-character strings, just return a character set.
-     ((= (length strings) (apply '+ (mapcar 'length strings)))
+     ((eql (length strings) (apply '+ (mapcar 'length strings)))
       (concat open-charset
 	      (regexp-opt-charset strings)
 	      close-charset))
--- a/lisp/replace.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/replace.el	Tue Mar 08 23:41:52 2011 +0000
@@ -153,7 +153,7 @@
   (let (replacements)
     (if (listp to-strings)
 	(setq replacements to-strings)
-      (while (/= (length to-strings) 0)
+      (while (not (eql (length to-strings) 0))
 	(if (string-match " " to-strings)
 	    (setq replacements
 		  (append replacements
--- a/lisp/specifier.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/specifier.el	Tue Mar 08 23:41:52 2011 +0000
@@ -894,7 +894,7 @@
                                                current-device)))
                                      (and dev (device-type dev))))
                                   (t devtype-spec))))
-               (cond ((= 1 (length okdevs)) (car okdevs))
+               (cond ((eql 1 (length okdevs)) (car okdevs))
                      ((< try-stages 3) nil)
                      ((null okdevs) devtype)
                      ((memq devtype okdevs) devtype)
--- a/lisp/subr.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/subr.el	Tue Mar 08 23:41:52 2011 +0000
@@ -1750,8 +1750,9 @@
 Ranges and carets are not treated specially.  This implementation is
 in Lisp; do not use it in performance-critical code."
   (let ((list (delete-duplicates (string-to-list string) :test #'=)))
-    (when (/= 1 (length list)) ;; No quoting needed in a string of length 1.
-      (when (eq ?^ (car list))
+    (when (not (eql 1 (length list))) ;; No quoting needed in a string of
+				      ;; length 1.
+      (when (eql ?^ (car list))
         (setq list (nconc (cdr list) '(?^))))
       (when (memq ?\\ list)
         (setq list (delq ?\\ list)
--- a/lisp/test-harness.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/test-harness.el	Tue Mar 08 23:41:52 2011 +0000
@@ -334,7 +334,7 @@
 	"Wrap a BODY that consists of tests that are known to trigger an error.
 This causes messages to be printed on failure indicating that this is expected,
 and on success indicating that this is unexpected."
-	(let ((quoted-body (if (= 1 (length body))
+	(let ((quoted-body (if (eql 1 (length body))
 			       `(quote ,(car body)) `(quote (progn ,@body)))))
           `(let ((test-harness-bug-expected t)
 		 (test-harness-failure-tag "KNOWN BUG")
@@ -401,12 +401,12 @@
 	(let ((test-assertion assertion)
 	      (negated nil))
 	  (when (and (listp test-assertion)
-		     (= 2 (length test-assertion))
+		     (eql 2 (length test-assertion))
 		     (memq (car test-assertion) '(not null)))
 	    (setq test-assertion (cadr test-assertion))
 	    (setq negated t))
 	  (when (and (listp test-assertion)
-		     (= 3 (length test-assertion))
+		     (eql 3 (length test-assertion))
 		     (member (car test-assertion)
 			     '(eq eql equal equalp = string= < <= > >=)))
 	    (let* ((test (car test-assertion))
@@ -449,7 +449,7 @@
 	    (cl-assertion-failed nil))))
 
       (defmacro Check-Error (expected-error &rest body)
-	(let ((quoted-body (if (= 1 (length body))
+	(let ((quoted-body (if (eql 1 (length body))
 			       `(quote ,(car body)) `(quote (progn ,@body)))))
 	  `(condition-case error-info
 	       (progn
@@ -469,7 +469,7 @@
 
       (defmacro Check-Error-Message (expected-error expected-error-regexp
 						    &rest body)
-	(let ((quoted-body (if (= 1 (length body))
+	(let ((quoted-body (if (eql 1 (length body))
 			       `(quote ,(car body)) `(quote (progn ,@body)))))
 	  `(condition-case error-info
 	       (progn
@@ -498,7 +498,7 @@
 
       ;; Do not use this with Silence-Message.
       (defmacro Check-Message (expected-message-regexp &rest body)
-	(let ((quoted-body (if (= 1 (length body))
+	(let ((quoted-body (if (eql 1 (length body))
 			       `(quote ,(car body))
 			     `(quote (progn ,@body)))))
 	  `(Skip-Test-Unless (fboundp 'defadvice) "can't defadvice"
@@ -756,7 +756,7 @@
 		 (if (= unexpected-test-suite-failures 1) "was" "were")
 		 unexpected-test-suite-failures
 		 (if (= unexpected-test-suite-failures 1) "failure" "failures")
-		 (if (= (length unexpected-test-suite-failure-files) 1)
+		 (if (eql (length unexpected-test-suite-failure-files) 1)
 		     "file"
 		   "files"))
 	(while unexpected-test-suite-failure-files
--- a/lisp/wid-edit.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/wid-edit.el	Tue Mar 08 23:41:52 2011 +0000
@@ -2487,12 +2487,12 @@
 	  (widget-put old :value internal)))
     ;; Find new choice.
     (setq current
-	  (cond ((= (length args) 0)
+	  (cond ((eql (length args) 0)
 		 nil)
-		((= (length args) 1)
+		((eql (length args) 1)
 		 (nth 0 args))
 		((and widget-choice-toggle
-		      (= (length args) 2)
+		      (eql (length args) 2)
 		      (memq old args))
 		 (if (eq old (nth 0 args))
 		     (nth 1 args)
@@ -3639,7 +3639,7 @@
 				 (widget-get widget :prompt-match)
 				 nil initial history)))
     (if (and (stringp answer)
-	     (not (zerop (length answer))))
+	     (not (eql (length answer) 0)))
 	answer
       (error "No value"))))
 
@@ -4031,7 +4031,7 @@
   "Prompt for a color."
   (let* ((tag (widget-apply widget :menu-tag-get))
 	 (answer (read-color (concat tag ": "))))
-    (unless (zerop (length answer))
+    (unless (eql (length answer) 0)
       (widget-value-set widget answer)
       (widget-setup)
       (widget-apply widget :notify widget event))))
--- a/lisp/window-xemacs.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/window-xemacs.el	Tue Mar 08 23:41:52 2011 +0000
@@ -551,7 +551,7 @@
   (interactive)
   (let ((wc (or config (current-window-configuration)))
 	(stack (window-config-stack)))
-    (if (or (= 0 (undoable-stack-a-length stack))
+    (if (or (eql 0 (undoable-stack-a-length stack))
 	    (not (equal (undoable-stack-a-top stack) wc)))
 	(undoable-stack-push stack wc))))
 
--- a/lisp/window.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/window.el	Tue Mar 08 23:41:52 2011 +0000
@@ -585,7 +585,7 @@
 	 (delq frame (visible-frame-list))
 	 window-solitary
 	 (if (and (eq default-minibuffer-frame frame)
-		  (= 1 (length (minibuffer-frame-list))))
+		  (eql 1 (length (minibuffer-frame-list))))
 	     (setq window nil)
 	   (delete-frame frame)
 	   (setq window-handled t)))
--- a/lisp/x-compose.el	Tue Mar 08 22:32:49 2011 +0000
+++ b/lisp/x-compose.el	Tue Mar 08 23:41:52 2011 +0000
@@ -918,9 +918,9 @@
 	   (mod-char (and (>= (downcase base-char) ?a) ; only do alphabetics?
 			  (<= (downcase base-char) ?z)
 			  (lookup-key map (make-string 1 base-char)))))
-      (when (and (vectorp mod-char) (= (length mod-char) 1))
+      (when (and (vectorp mod-char) (eql (length mod-char) 1))
         (setq mod-char (aref mod-char 0))
-        (if (and (consp mod-char) (= (length mod-char) 1)
+        (if (and (consp mod-char) (eql (length mod-char) 1)
                  (characterp (car mod-char)))
             (setq mod-char (car mod-char))))
       (if (and mod-char (symbolp mod-char))