effective-method-class generic
effective-method-function-name generic
effective-method-keywords generic
+ effective-method-live-p generic
effective-method-message generic
ensure-ilayout-var function
inst-chain-head generic
sod-class sod-class
compute-method-entry-functions
basic-effective-method
+ effective-method
simple-effective-method
compute-sod-effective-method
sod-message sod-class
effective-method
effective-method-keywords
effective-method
+effective-method-live-p
+ simple-effective-method
effective-method-message
effective-method
effective-slot-class
{effective-method-basic-argument-names @<method> @> @<list>}
\end{describe}
+\begin{describe}{gf}
+ {effective-method-live-p @<method> @> @<generalized-boolean>}
+\end{describe}
\begin{describe}{cls}
*null-pointer* 0)))
(call-next-method)))))))
-(defmethod compute-method-entry-functions
- ((method simple-effective-method))
- (if (effective-method-primary-methods method)
+(defmethod effective-method-live-p ((method simple-effective-method))
+ (effective-method-primary-methods method))
+
+(defmethod compute-method-entry-functions :around ((method effective-method))
+ (if (effective-method-live-p method)
(call-next-method)
nil))
not included, and neither are more exotic arguments added as part of the
method delegation protocol."))
+(export 'effective-method-live-p)
+(defgeneric effective-method-live-p (method)
+ (:documentation
+ "Returns true if the effective METHOD is live.
+
+ An effective method is `live' if it should actually have proper method entry
+ functions associated with it and stored in the class vtable. The other
+ possibility is that the method is `dead', in which case the function
+ pointers in the vtable are left null."))
+
;;;--------------------------------------------------------------------------
;;; Code generation.