From bf67e051e6cfdb061c3081dcd65100bd49d5e464 Mon Sep 17 00:00:00 2001 From: lisphacker Date: Thu, 12 Apr 2007 13:24:33 +0000 Subject: [PATCH] 1.0.4.72: More x86 backend cleanups * more make-ea-for-FOO. * more inst mov make-ea FOO => storew. --- src/compiler/x86/cell.lisp | 26 ++++++++++---------------- src/compiler/x86/system.lisp | 10 +++------- version.lisp-expr | 2 +- 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/compiler/x86/cell.lisp b/src/compiler/x86/cell.lisp index d1bc473..4504300 100644 --- a/src/compiler/x86/cell.lisp +++ b/src/compiler/x86/cell.lisp @@ -31,22 +31,16 @@ (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)))) diff --git a/src/compiler/x86/system.lisp b/src/compiler/x86/system.lisp index f3a65a3..44b1df4 100644 --- a/src/compiler/x86/system.lisp +++ b/src/compiler/x86/system.lisp @@ -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) @@ -240,10 +238,8 @@ (: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))) diff --git a/version.lisp-expr b/version.lisp-expr index 90121ff..db0881e 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.4.71" +"1.0.4.72" -- 1.7.10.4