X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Farray.lisp;h=3f7da3e3b9638fc345afe2a55c3569c9acd7e6d4;hb=a6b91f356da1b5ae2987f79db9bd137970512959;hp=25df53b79f46a77f5c90b4326965ff342c8e274c;hpb=f1ffbf976aaa50b7b22f126b97e34afe06a91210;p=sbcl.git diff --git a/src/compiler/generic/array.lisp b/src/compiler/generic/array.lisp index 25df53b..3f7da3e 100644 --- a/src/compiler/generic/array.lisp +++ b/src/compiler/generic/array.lisp @@ -23,7 +23,10 @@ (:vop-var vop) (:save-p :compute-only) (:generator 1 - (error-call vop nil-array-accessed-error object))) + (error-call vop + #!+x86 'nil-array-accessed-error + #!-x86 nil-array-accessed-error + object))) ;;; It shouldn't be possible to fall through to here in normal user ;;; code, as the system is smart enough to deduce that there must be @@ -48,7 +51,49 @@ (:vop-var vop) (:save-p :compute-only) (:generator 1 - (error-call vop nil-array-accessed-error object))) + (error-call vop + #!+x86 'nil-array-accessed-error + #!-x86 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 + #!+x86 'nil-array-accessed-error + #!-x86 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 + #!+x86 'nil-array-accessed-error + #!-x86 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