`(let ,bindings ,form)
form)))
-;;; FIXME: Why is this defined in two different places? And what does
-;;; it mean anyway? And can we just eliminate it completely (replacing
-;;; it with NIL, then hand-eliminating any resulting dead code)?
-(defconstant +optimize-slot-boundp+ nil)
-
(defmacro accessor-slot-boundp (object slot-name)
(unless (constantp slot-name)
(error "~S requires its slot-name argument to be a constant"
'accessor-slot-boundp))
- (let* ((slot-name (eval slot-name))
- (sym (slot-boundp-symbol slot-name)))
- (if (not +optimize-slot-boundp+)
- `(slot-boundp-normal ,object ',slot-name)
- `(asv-funcall ,sym ,slot-name boundp ,object))))
+ (let ((slot-name (eval slot-name)))
+ `(slot-boundp-normal ,object ',slot-name)))
(defun structure-slot-boundp (object)
(declare (ignore object))
(defun make-structure-slot-boundp-function (slotd)
(let* ((reader (slot-definition-internal-reader-function slotd))
- (fun #'(lambda (object)
- (not (eq (funcall reader object) +slot-unbound+)))))
+ (fun (lambda (object)
+ (not (eq (funcall reader object) +slot-unbound+)))))
(declare (type function reader))
fun))
(defun make-optimized-std-reader-method-function (fsc-p slot-name index)
(declare #.*optimize-speed*)
- (set-function-name
+ (set-fun-name
(etypecase index
(fixnum (if fsc-p
(lambda (instance)
(defun make-optimized-std-writer-method-function (fsc-p slot-name index)
(declare #.*optimize-speed*)
- (set-function-name
+ (set-fun-name
(etypecase index
(fixnum (if fsc-p
(lambda (nv instance)
(defun make-optimized-std-boundp-method-function (fsc-p slot-name index)
(declare #.*optimize-speed*)
- (set-function-name
+ (set-fun-name
(etypecase index
(fixnum (if fsc-p
- #'(lambda (instance)
- (not (eq (clos-slots-ref (fsc-instance-slots instance)
- index)
- +slot-unbound+)))
- #'(lambda (instance)
- (not (eq (clos-slots-ref (std-instance-slots instance)
- index)
- +slot-unbound+)))))
- (cons #'(lambda (instance)
- (declare (ignore instance))
- (not (eq (cdr index) +slot-unbound+)))))
+ (lambda (instance)
+ (not (eq (clos-slots-ref (fsc-instance-slots instance)
+ index)
+ +slot-unbound+)))
+ (lambda (instance)
+ (not (eq (clos-slots-ref (std-instance-slots instance)
+ index)
+ +slot-unbound+)))))
+ (cons (lambda (instance)
+ (declare (ignore instance))
+ (not (eq (cdr index) +slot-unbound+)))))
`(boundp ,slot-name)))
(defun make-optimized-structure-slot-value-using-class-method-function (function)
(defun make-optimized-structure-setf-slot-value-using-class-method-function (function)
(declare (type function function))
- #'(lambda (nv class object slotd)
- (declare (ignore class slotd))
- (funcall function nv object)))
+ (lambda (nv class object slotd)
+ (declare (ignore class slotd))
+ (funcall function nv object)))
(defun make-optimized-structure-slot-boundp-using-class-method-function (function)
(declare (type function function))
- #'(lambda (class object slotd)
- (declare (ignore class slotd))
- (not (eq (funcall function object) +slot-unbound+))))
+ (lambda (class object slotd)
+ (declare (ignore class slotd))
+ (not (eq (funcall function object) +slot-unbound+))))
(defun get-optimized-std-slot-value-using-class-method-function (class
slotd
(defun get-accessor-from-svuc-method-function (class slotd sdfun name)
(macrolet ((emf-funcall (emf &rest args)
`(invoke-effective-method-function ,emf nil ,@args)))
- (set-function-name
+ (set-fun-name
(case name
(reader (lambda (instance)
(emf-funcall sdfun class instance slotd)))
(gf (ensure-generic-function name)))
(unless (generic-function-methods gf)
(add-writer-method *the-class-slot-object* gf slot-name))))
- (when (and +optimize-slot-boundp+
- (or (null type) (eq type 'boundp)))
- (let* ((name (slot-boundp-symbol slot-name))
- (gf (ensure-generic-function name)))
- (unless (generic-function-methods gf)
- (add-boundp-method *the-class-slot-object* gf slot-name))))
nil)
(defun initialize-internal-slot-gfs* (readers writers boundps)