+\f
+;;;; STANDARD-INSTANCE-ACCESS
+
+(declaim (inline standard-instance-access
+ (setf standard-instance-access)
+ (cas stadard-instance-access)
+ funcallable-standard-instance-access
+ (setf funcallable-standard-instance-access)
+ (cas funcallable-standard-instance-access)))
+
+(defun standard-instance-access (instance location)
+ (clos-slots-ref (std-instance-slots instance) location))
+
+(defun (setf standard-instance-access) (new-value instance location)
+ (setf (clos-slots-ref (std-instance-slots instance) location) new-value))
+
+(defun (cas standard-instance-access) (old-value new-value instance location)
+ ;; FIXME: Maybe get rid of CLOS-SLOTS-REF entirely?
+ (cas (svref (std-instance-slots instance) location) old-value new-value))
+
+(defun funcallable-standard-instance-access (instance location)
+ (clos-slots-ref (fsc-instance-slots instance) location))
+
+(defun (setf funcallable-standard-instance-access) (new-value instance location)
+ (setf (clos-slots-ref (fsc-instance-slots instance) location) new-value))