(: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 *)
+ (:ignore index value)
(:vop-var vop)
(:save-p :compute-only)
(:generator 1
- (error-call vop nil-array-accessed-error object)))
+ (error-call vop
+ #!+(or x86 x86-64) 'nil-array-accessed-error
+ #!-(or x86 x86-64) 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
(: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 *)
+ (:ignore index value result)
+ (:vop-var vop)
+ (:save-p :compute-only)
+ (:generator 1
+ (error-call vop
+ #!+(or x86 x86-64) 'nil-array-accessed-error
+ #!-(or x86 x86-64) 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
+ #!+(or x86 x86-64) 'nil-array-accessed-error
+ #!-(or x86 x86-64) 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)))
+ (error-call vop
+ #!+(or x86 x86-64) 'nil-array-accessed-error
+ #!-(or x86 x86-64) nil-array-accessed-error
+ object)))
\f
;;; FIXME: There is probably plenty of other array stuff that looks
;;; the same or similar enough to be genericized. Do so, and move it