0.9.14.30:
authorJuho Snellman <jsnell@iki.fi>
Thu, 20 Jul 2006 17:45:53 +0000 (17:45 +0000)
committerJuho Snellman <jsnell@iki.fi>
Thu, 20 Jul 2006 17:45:53 +0000 (17:45 +0000)
Micro-optimize x86-64 MOVE-FROM-SIGNED a bit more (thanks to
        Lutz Euler).

src/compiler/x86-64/move.lisp
version.lisp-expr

index 53b16bf..4caf11f 100644 (file)
      (aver (not (location= x y)))
      (let ((bignum (gen-label))
            (done (gen-label)))
-       (inst mov y x)
        ;; We can't do the overflow check with SHL Y, 3, since the
        ;; state of the overflow flag is only reliably set when
        ;; shifting by 1. There used to be code here for doing "shift
        ;; we can just do a straight multiply instead of trying to
        ;; optimize it to a shift. This is both faster and smaller.
        ;; -- JES, 2006-07-08
-       (inst imul y 8)
+       (inst imul y x (ash 1 n-fixnum-tag-bits))
        (inst jmp :o bignum)
        (emit-label done)
 
index 55655dd..9dbf000 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".)
-"0.9.14.29"
+"0.9.14.30"