[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
specializer-direct-xxx generic functions
- To: common-lisp-object-system@mcc.com
- Subject: specializer-direct-xxx generic functions
- From: kab@CHARON.MIT.EDU (Kim A. Barrett)
- Date: Wed, 3 Oct 90 13:46:47 EDT
The defacto list of CLOS symbol names includes the functions
SPECIALIER-DIRECT-METHODS and SPECIALIZER-DIRECT-GENERIC-FUNCTIONS, which are
described in the Metaobject Protocol as returning the obvious lists. It seems
to me that there is a rather bad interaction between these and the special
forms GENERIC-FLET and GENERIC-LABELS, since it seems to require that the
mechanisms for computing the results for the SPECIALIZER-xxx functions are
going to have to either be able to do a heap walk to search for the items to be
returned (this seems just generally impractical) or maintain references to the
appropriate objects. This would seem to violate possible DYNAMIC-EXTENT
declarations on the local generic functions. It would also seem to be
difficult to dereference the local functions so that they can be garbage
collected.
While I can certainly understand the desire to have these functions for
purposes of introspection, its not clear to me that they are actually required
for the implementation. I seem to remember that PCL at one time used
CLASS-DIRECT-GENERIC-FUNCTIONS to find generic functions whose caches needed to
be cleared due to a change in the class hierarchy. However, a recent paper
by Gregor and Luis Rodriguez describes a technique for handling this update
problem that don't use this mechanism (though I don't know if they've actually
been implemented in PCL).