X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Farray.lisp;h=f8c3c7037cadc2b159634ad175f5939fba2ddc26;hb=eb6f8dd033501c7372b27967a2cb7750560897bd;hp=6d9d9a6eeaf0ddaa15d7c6ab343b9f43bce59a1d;hpb=fc999187f3f80dfcf170348df676386b8403e261;p=sbcl.git diff --git a/src/compiler/x86/array.lisp b/src/compiler/x86/array.lisp index 6d9d9a6..f8c3c70 100644 --- a/src/compiler/x86/array.lisp +++ b/src/compiler/x86/array.lisp @@ -1253,20 +1253,13 @@ (:args (object :scs (descriptor-reg)) (index :scs (unsigned-reg))) (:arg-types simple-base-string positive-fixnum) - (:temporary (:sc unsigned-reg ; byte-reg - :offset eax-offset ; al-offset - :target value - :from (:eval 0) :to (:result 0)) - eax) - (:ignore eax) (:results (value :scs (base-char-reg))) (:result-types base-char) (:generator 5 - (inst mov al-tn + (inst mov value (make-ea :byte :base object :index index :scale 1 :disp (- (* vector-data-offset n-word-bytes) - other-pointer-lowtag))) - (move value al-tn))) + other-pointer-lowtag))))) (define-vop (data-vector-ref-c/simple-base-string) (:translate data-vector-ref) @@ -1274,25 +1267,20 @@ (:args (object :scs (descriptor-reg))) (:info index) (:arg-types simple-base-string (:constant (signed-byte 30))) - (:temporary (:sc unsigned-reg :offset eax-offset :target value - :from (:eval 0) :to (:result 0)) - eax) - (:ignore eax) (:results (value :scs (base-char-reg))) (:result-types base-char) (:generator 4 - (inst mov al-tn + (inst mov value (make-ea :byte :base object :disp (- (+ (* vector-data-offset n-word-bytes) index) - other-pointer-lowtag))) - (move value al-tn))) + other-pointer-lowtag))))) (define-vop (data-vector-set/simple-base-string) (:translate data-vector-set) (:policy :fast-safe) (:args (object :scs (descriptor-reg) :to (:eval 0)) (index :scs (unsigned-reg) :to (:eval 0)) - (value :scs (base-char-reg))) + (value :scs (base-char-reg) :target result)) (:arg-types simple-base-string positive-fixnum base-char) (:results (result :scs (base-char-reg))) (:result-types base-char)