(slot-unbound (wrapper-class* wrapper) object slot-name)
value)))
+;;; This is used during the PCL build, but gets replaced by a deftransform
+;;; in fixup.lisp.
(define-compiler-macro slot-value (&whole form object slot-name
&environment env)
(if (and (constantp slot-name env)
(defun safe-set-slot-value (object slot-name new-value)
(set-slot-value object slot-name new-value))
+;;; This is used during the PCL build, but gets replaced by a deftransform
+;;; in fixup.lisp.
(define-compiler-macro set-slot-value (&whole form object slot-name new-value
&environment env)
(if (and (constantp slot-name env)
(let ((constructor (class-defstruct-constructor class)))
(if constructor
(funcall constructor)
- (allocate-standard-instance (class-wrapper class)))))
+ (error "Don't know how to allocate ~S" class))))
;;; FIXME: It would be nicer to have allocate-instance return
;;; uninitialized objects for conditions as well.