X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/ea578bb4b9eb4a03b2eb4ed151e058d699c216ea..d0bb9ec5609757a5c1850af65c6c27febe766e55:/src/class-layout-impl.lisp diff --git a/src/class-layout-impl.lisp b/src/class-layout-impl.lisp index 68c989b..950db2b 100644 --- a/src/class-layout-impl.lisp +++ b/src/class-layout-impl.lisp @@ -104,9 +104,10 @@ (defmethod print-object ((entry method-entry) stream) (maybe-print-unreadable-object (entry stream :type t) - (format stream "~A:~A" + (format stream "~A:~A~@[ ~S~]" (method-entry-effective-method entry) - (sod-class-nickname (method-entry-chain-head entry))))) + (sod-class-nickname (method-entry-chain-head entry)) + (method-entry-role entry)))) (defmethod compute-sod-effective-method ((message sod-message) (class sod-class)) @@ -130,6 +131,7 @@ (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))) @@ -207,6 +209,7 @@ (defmethod slot-unbound (clos-class (class sod-class) (slot-name (eql 'ilayout))) + (declare (ignore clos-class)) (setf (slot-value class 'ilayout) (compute-ilayout class))) @@ -227,17 +230,17 @@ (subclass sod-class) (chain-head sod-class) (chain-tail sod-class)) - (flet ((make-entry (message) + (flet ((make-entries (message) (let ((method (find message (sod-class-effective-methods subclass) :key #'effective-method-message))) - (make-method-entry method chain-head chain-tail)))) + (make-method-entries method chain-head chain-tail)))) (make-instance 'vtmsgs :class class :subclass subclass :chain-head chain-head :chain-tail chain-tail - :entries (mapcar #'make-entry + :entries (mapcan #'make-entries (sod-class-messages class))))) ;;; class-pointer @@ -389,6 +392,7 @@ (defmethod slot-unbound (clos-class (class sod-class) (slot-name (eql 'vtables))) + (declare (ignore clos-class)) (setf (slot-value class 'vtables) (compute-vtables class)))