Source
(defmethod slot-makunbound-using-class :around ((class persistent-class)
object
slot-name-or-def)
(maybe-update-slot-info class)
;; If this is a persistent slot, tell the cache that this object
;; has changed. Rely on the cache to save it when necessary.
(let ((slot (slot-def-and-name class slot-name-or-def)))
(if (and (slot-persistence slot)
;; If the RUCKSACK slot isn't bound yet, the object is
;; just being loaded from disk and we don't need to
;; do anything special.
(slot-boundp object 'rucksack))
(let* ((old-boundp (slot-boundp-using-class class object slot-name-or-def))
(old-value
(and old-boundp
(slot-value-using-class class object slot-name-or-def)))
(result (call-next-method)))
(cache-touch-object object (cache object))
(rucksack-maybe-index-changed-slot (rucksack object)
class object slot
old-value nil
old-boundp nil)
result)
(call-next-method))))
Source Context