src/: Introduce a macro for defining on-demand slots.
[sod] / src / class-layout-impl.lisp
index 26782e2..8edfcf6 100644 (file)
                    (sod-class-messages super)))
          (sod-class-precedence-list class)))
 
-(defmethod slot-unbound
-    (clos-class (class sod-class) (slot-name (eql 'effective-methods)))
-  (declare (ignore clos-class))
-  (setf (slot-value class 'effective-methods)
-       (compute-effective-methods class)))
+(define-on-demand-slot sod-class effective-methods (class)
+  (compute-effective-methods class))
 
 ;;;--------------------------------------------------------------------------
 ;;; Instance layout.
                                                    (reverse chain)))
                                  (sod-class-chains class))))
 
-(defmethod slot-unbound
-    (clos-class (class sod-class) (slot-name (eql '%ilayout)))
-  (declare (ignore clos-class))
-  (setf (slot-value class '%ilayout) (compute-ilayout class)))
+(define-on-demand-slot sod-class %ilayout (class)
+  (compute-ilayout class))
 
 ;;;--------------------------------------------------------------------------
 ;;; Vtable layout.
            (compute-vtable class (reverse chain)))
          (sod-class-chains class)))
 
-(defmethod slot-unbound
-    (clos-class (class sod-class) (slot-name (eql 'vtables)))
-  (declare (ignore clos-class))
-  (setf (slot-value class 'vtables)
-       (compute-vtables class)))
+(define-on-demand-slot sod-class vtables (class)
+  (compute-vtables class))
 
 ;;;----- That's all, folks --------------------------------------------------