X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Falpha%2Fmacros.lisp;h=790d69e33d45098001555e9f5ab60a77e312166a;hb=f8893c7c658bf9d9e0757c63e47af2fdea810f04;hp=283cf22954b2d87bae5c62504128286978a2cc19;hpb=b7eed59f1877263e1af5ad80299e641e8276f77d;p=sbcl.git diff --git a/src/compiler/alpha/macros.lisp b/src/compiler/alpha/macros.lisp index 283cf22..790d69e 100644 --- a/src/compiler/alpha/macros.lisp +++ b/src/compiler/alpha/macros.lisp @@ -379,7 +379,7 @@ (:result-types ,el-type) (:temporary (:sc non-descriptor-reg) temp) (:temporary (:sc non-descriptor-reg) temp1) - (:generator 5 + (:generator 4 ,@(ecase size (:byte (if signed @@ -472,32 +472,38 @@ (:temporary (:sc non-descriptor-reg) temp2) (:results (result :scs ,scs)) (:result-types ,el-type) - (:generator 5 + (:generator 4 ,@(ecase size (:byte - `((inst lda temp (- (* ,offset n-word-bytes) - (* index ,scale) ,lowtag) + `((inst lda temp (- (+ (* ,offset n-word-bytes) + (* index ,scale)) + ,lowtag) object) - (inst ldq_u temp1 (- (* ,offset n-word-bytes) - (* index ,scale) ,lowtag) + (inst ldq_u temp1 (- (+ (* ,offset n-word-bytes) + (* index ,scale)) + ,lowtag) object) (inst insbl value temp temp2) (inst mskbl temp1 temp temp1) (inst bis temp1 temp2 temp1) - (inst stq_u temp1 (- (* ,offset n-word-bytes) - (* index ,scale) ,lowtag) object))) + (inst stq_u temp1 (- (+ (* ,offset n-word-bytes) + (* index ,scale)) + ,lowtag) object))) (:short - `((inst lda temp (- (* ,offset n-word-bytes) - (* index ,scale) ,lowtag) + `((inst lda temp (- (+ (* ,offset n-word-bytes) + (* index ,scale)) + ,lowtag) object) - (inst ldq_u temp1 (- (* ,offset n-word-bytes) - (* index ,scale) ,lowtag) + (inst ldq_u temp1 (- (+ (* ,offset n-word-bytes) + (* index ,scale)) + ,lowtag) object) (inst mskwl temp1 temp temp1) (inst inswl value temp temp2) (inst bis temp1 temp2 temp) - (inst stq_u temp (- (* ,offset n-word-bytes) - (* index ,scale) ,lowtag) object)))) + (inst stq_u temp (- (+ (* ,offset n-word-bytes) + (* index ,scale)) + ,lowtag) object)))) (move value result)))))) (defmacro sb!sys::with-pinned-objects ((&rest objects) &body body)