[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

specializer-direct-xxx generic functions



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).