X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Farray.lisp;h=29affadcc9c69ac6a5a9c669a5d367538226a2b3;hb=4378b6ab369ee101b5c4625f24901561ad4899b8;hp=36f2d492a87c6f39531ee67e6426b8685e91f371;hpb=d2508075f57f0b37c127a5145b009e7fbba76f6f;p=sbcl.git diff --git a/src/compiler/generic/array.lisp b/src/compiler/generic/array.lisp index 36f2d49..29affad 100644 --- a/src/compiler/generic/array.lisp +++ b/src/compiler/generic/array.lisp @@ -15,7 +15,7 @@ (:translate data-vector-ref) (:policy :fast-safe) (:args (object :scs (descriptor-reg)) - (index :scs (unsigned-reg))) + (index :scs (unsigned-reg))) (:arg-types simple-array-nil positive-fixnum) (:results (value :scs (descriptor-reg))) (:result-types *) @@ -39,8 +39,8 @@ (:translate data-vector-set) (:policy :fast-safe) (:args (object :scs (descriptor-reg)) - (index :scs (unsigned-reg)) - (value :scs (descriptor-reg))) + (index :scs (unsigned-reg)) + (value :scs (descriptor-reg))) (:arg-types simple-array-nil positive-fixnum *) (:results (result :scs (descriptor-reg))) (:result-types *) @@ -49,6 +49,39 @@ (:save-p :compute-only) (:generator 1 (error-call vop nil-array-accessed-error object))) + +(define-vop (data-vector-ref-with-offset/simple-array-nil) + (:translate data-vector-ref-with-offset) + (:policy :fast-safe) + (:args (object :scs (descriptor-reg)) + (index :scs (unsigned-reg))) + (:info offset) + (:arg-types simple-array-nil positive-fixnum + (:constant (integer 0 0))) + (:results (value :scs (descriptor-reg))) + (:result-types *) + (:ignore index value offset) + (:vop-var vop) + (:save-p :compute-only) + (:generator 1 + (error-call vop nil-array-accessed-error object))) + +(define-vop (data-vector-set/simple-array-nil) + (:translate data-vector-set) + (:policy :fast-safe) + (:args (object :scs (descriptor-reg)) + (index :scs (unsigned-reg)) + (value :scs (descriptor-reg))) + (:info offset) + (:arg-types simple-array-nil positive-fixnum * + (:constant (integer 0 0))) + (:results (result :scs (descriptor-reg))) + (:result-types *) + (:ignore index value result offset) + (:vop-var vop) + (:save-p :compute-only) + (:generator 1 + (error-call vop nil-array-accessed-error object))) ;;; FIXME: There is probably plenty of other array stuff that looks ;;; the same or similar enough to be genericized. Do so, and move it