diff lisp/bytecomp.el @ 5437:002cb5224e4f

Merge with 21.5 trunk.
author Mats Lidell <matsl@xemacs.org>
date Mon, 15 Nov 2010 22:33:52 +0100
parents b9167d522a9a ec05a30f7148
children 0af042a0c116
line wrap: on
line diff
--- a/lisp/bytecomp.el	Sat Nov 13 00:15:58 2010 +0100
+++ b/lisp/bytecomp.el	Mon Nov 15 22:33:52 2010 +0100
@@ -3158,7 +3158,7 @@
 (byte-defop-compiler fixnump		1)
 (byte-defop-compiler skip-chars-forward     1-2+1)
 (byte-defop-compiler skip-chars-backward    1-2+1)
-(byte-defop-compiler (eql byte-eq) 	2)
+(byte-defop-compiler eq			2)
 (byte-defop-compiler20 old-eq 	 	2)
 (byte-defop-compiler20 old-memq		2)
 (byte-defop-compiler cons		2)
@@ -3907,6 +3907,7 @@
 (byte-defop-compiler-1 let*)
 
 (byte-defop-compiler-1 integerp)
+(byte-defop-compiler-1 eql)
 (byte-defop-compiler-1 fillarray)
 
 (defun byte-compile-progn (form)
@@ -4141,6 +4142,24 @@
       (byte-compile-constant t)
       (byte-compile-out-tag donetag))))
 
+(defun byte-compile-eql (form)
+  (if (eql 3 (length form))
+    (let ((donetag (byte-compile-make-tag))
+	  (eqtag (byte-compile-make-tag)))
+      (mapc 'byte-compile-form (cdr form))
+      (byte-compile-out 'byte-dup 0)
+      (byte-compile-out 'byte-numberp 0)
+      (byte-compile-goto 'byte-goto-if-nil eqtag)
+      (byte-compile-out 'byte-dup 0)
+      (byte-compile-out 'byte-fixnump 0)
+      (byte-compile-goto 'byte-goto-if-not-nil eqtag)
+      (byte-compile-out 'byte-equal 0)
+      (byte-compile-goto 'byte-goto donetag)
+      (byte-compile-out-tag eqtag)
+      (byte-compile-out 'byte-eq 0)
+      (byte-compile-out-tag donetag))
+    (byte-compile-subr-wrong-args form 2)))
+
 ;;(byte-defop-compiler-1 /= byte-compile-negated)
 (byte-defop-compiler-1 atom byte-compile-negated)
 (byte-defop-compiler-1 nlistp byte-compile-negated)