1.0.4.72: More x86 backend cleanups
authorlisphacker <lisphacker>
Thu, 12 Apr 2007 13:24:33 +0000 (13:24 +0000)
committerlisphacker <lisphacker>
Thu, 12 Apr 2007 13:24:33 +0000 (13:24 +0000)
  * more make-ea-for-FOO.

  * more inst mov make-ea FOO => storew.

src/compiler/x86/cell.lisp
src/compiler/x86/system.lisp
version.lisp-expr

index d1bc473..4504300 100644 (file)
      (if (sc-is value immediate)
         (let ((val (tn-value value)))
            (etypecase val
-              (integer
-               (inst mov
-                     (make-ea :dword :base object
-                              :disp (- (* offset n-word-bytes) lowtag))
-                     (fixnumize val)))
-              (symbol
-               (inst mov
-                     (make-ea :dword :base object
-                              :disp (- (* offset n-word-bytes) lowtag))
-                     (+ nil-value (static-symbol-offset val))))
-              (character
-               (inst mov
-                     (make-ea :dword :base object
-                              :disp (- (* offset n-word-bytes) lowtag))
-                     (logior (ash (char-code val) n-widetag-bits)
-                             character-widetag)))))
+             (integer
+              (storew (fixnumize val)
+                      object offset lowtag))
+             (symbol
+              (storew (+ nil-value (static-symbol-offset val))
+                      object offset lowtag))
+             (character
+              (storew (logior (ash (char-code val) n-widetag-bits)
+                              character-widetag)
+                      object offset lowtag))))
        ;; Else, value not immediate.
        (storew value object offset lowtag))))
 \f
index f3a65a3..44b1df4 100644 (file)
@@ -85,9 +85,7 @@
   (:result-types positive-fixnum)
   (:generator 6
     (move eax type)
-    (inst mov
-          (make-ea :byte :base function :disp (- fun-pointer-lowtag))
-          al-tn)
+    (storeb al-tn function 0 fun-pointer-lowtag)
     (move result eax)))
 
 (define-vop (get-header-data)
   (:temporary (:sc any-reg :from (:argument 0) :to :result) temp)
   (:results (result :scs (descriptor-reg)))
   (:generator 3
-    (inst lea temp
-          (make-ea :byte :base new-self
-                   :disp (- (ash simple-fun-code-offset word-shift)
-                            fun-pointer-lowtag)))
+    (inst lea temp (make-ea-for-object-slot new-self simple-fun-code-offset
+                                            fun-pointer-lowtag))
     (storew temp function simple-fun-self-slot fun-pointer-lowtag)
     (move result new-self)))
 \f
index 90121ff..db0881e 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.4.71"
+"1.0.4.72"