(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
(: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
;;; 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"