From: Thiemo Seufer Date: Sun, 21 Dec 2008 17:55:18 +0000 (+0000) Subject: 1.0.23.62: Micro-optimization for MIPS' SYMBOL-HASH VOP. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=e3db13cb780f1d5ac5a03608489d9d68134afc44;p=sbcl.git 1.0.23.62: Micro-optimization for MIPS' SYMBOL-HASH VOP. * MIPS sucks now less. --- diff --git a/src/compiler/mips/cell.lisp b/src/compiler/mips/cell.lisp index 21427d3..4ba16b8 100644 --- a/src/compiler/mips/cell.lisp +++ b/src/compiler/mips/cell.lisp @@ -91,19 +91,17 @@ (: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))) ;;;; Fdefinition (fdefn) objects. diff --git a/version.lisp-expr b/version.lisp-expr index a626923..7b9c66c 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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"