1.0.23.62: Micro-optimization for MIPS' SYMBOL-HASH VOP.
authorThiemo Seufer <ths@networkno.de>
Sun, 21 Dec 2008 17:55:18 +0000 (17:55 +0000)
committerThiemo Seufer <ths@networkno.de>
Sun, 21 Dec 2008 17:55:18 +0000 (17:55 +0000)
  * MIPS sucks now less.

src/compiler/mips/cell.lisp
version.lisp-expr

index 21427d3..4ba16b8 100644 (file)
   (:policy :fast-safe)
   (:translate symbol-hash)
   (:args (symbol :scs (descriptor-reg)))
+  (:temporary (:scs (non-descriptor-reg)) temp)
   (:results (res :scs (any-reg)))
   (:result-types positive-fixnum)
-  (:temporary (:scs (any-reg)) temp)
   (:generator 2
     ;; The symbol-hash slot of NIL holds NIL because it is also the
     ;; cdr slot, so we have to strip off the two low bits to make sure
     ;; it is a fixnum.  The lowtag selection magic that is required to
     ;; ensure this is explained in the comment in objdef.lisp
-    ;;
-    ;; wow, MIPS sucks (or I do) -- CSR, 2004-05-20
-    (inst li temp (fixnumize -1))
-    (loadw res symbol symbol-hash-slot other-pointer-lowtag)
-    (inst and res temp)))
+    (loadw temp symbol symbol-hash-slot other-pointer-lowtag)
+    (inst srl temp n-fixnum-tag-bits)
+    (inst sll res temp n-fixnum-tag-bits)))
 \f
 ;;;; Fdefinition (fdefn) objects.
 
index a626923..7b9c66c 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.23.61"
+"1.0.23.62"