0.9.10.9:
authorChristophe Rhodes <csr21@cam.ac.uk>
Wed, 1 Mar 2006 09:10:32 +0000 (09:10 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Wed, 1 Mar 2006 09:10:32 +0000 (09:10 +0000)
Another try at the COPY-MORE-ARGS microoptimization, which was
in fact reverted inadvertantly by the ppc/gencgc merge.
... this time, schedule the instructions by hand to try to
avoid a stall.
... (whitespace.  *sigh*.)

src/compiler/ppc/call.lisp
src/runtime/gc-common.c
version.lisp-expr

index 8468f3f..a67ea18 100644 (file)
@@ -1043,11 +1043,9 @@ default-value-8
 
       (emit-label loop)
       ;; *--dst = *--src, --count
-      (inst addi src src (- n-word-bytes))
+      (inst lwzu temp src (- n-word-bytes))
       (inst addic. count count (- (fixnumize 1)))
-      (loadw temp src)
-      (inst addi dst dst (- n-word-bytes))
-      (storew temp dst)
+      (inst stwu temp dst (- n-word-bytes))
       (inst bgt loop)
 
       (emit-label do-regs)
index 37555f9..40d5547 100644 (file)
@@ -157,9 +157,9 @@ scavenge(lispobj *start, long n_words)
             }
         }
 #if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64)
-       /* This workaround is probably not needed for those ports
-          which don't have a partitioned register set (and therefore
-          scan the stack conservatively for roots). */
+        /* This workaround is probably not needed for those ports
+           which don't have a partitioned register set (and therefore
+           scan the stack conservatively for roots). */
         else if (n_words == 1) {
             /* there are some situations where an other-immediate may
                end up in a descriptor register.  I'm not sure whether
index 87a3031..c3afb39 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.10.8"
+"0.9.10.9"