- (if dsd
- `(setf (,(dsd-accessor-name dsd) object) new-value)
- (if (policy node (= safety 3))
- ;; Safe code wants to check the type, and the global
- ;; accessor won't do that. Also see the comment in the
- ;; compiler-macro.
- (abort-ir1-transform "cannot use optimized accessor in safe code")
- `(sb-pcl::accessor-set-slot-value object ',c-slot-name new-value))))
+ (cond (dsd
+ `(setf (,(dsd-accessor-name dsd) object) new-value))
+ ((policy node (= safety 3))
+ ;; Safe code wants to check the type, and the global
+ ;; accessor won't do that. Also see the comment in the
+ ;; compiler-macro.
+ (give-up-ir1-transform "cannot use optimized accessor in safe code"))
+ (t
+ (delay-ir1-transform node :constraint)
+ `(sb-pcl::accessor-set-slot-value object ',c-slot-name new-value))))