X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/ea578bb4b9eb4a03b2eb4ed151e058d699c216ea..1344e1f9c923a4d6602d64a33da175f48c7b7b64:/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 ((method effective-method) stream) (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 compute-effective-methods ((class sod-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))) @@ -207,6 +209,7 @@ (defmethod compute-ilayout ((class sod-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))) @@ -227,17 +230,17 @@ (defmethod compute-vtmsgs (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 compute-vtables ((class sod-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)))