[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: Don Cohen <email@example.com>
- Subject: Re: problem/suggestion
- From: Gregor J. Kiczales <firstname.lastname@example.org>
- Date: Fri, 27 Apr 90 10:37 PDT
- Cc: email@example.com, CommonLoops.pa@Xerox.COM
- In-reply-to: <9004271719.AA07004@vaxa.isi.edu>
- Redistributed: CommonLoops.pa
Date: Fri, 27 Apr 90 10:19:54 PDT
From: Don Cohen <firstname.lastname@example.org>
I'm running :RAINY-DAY-PCL on symbolics genera7.2 and having problems
with a method that has a large number (~200) of methods specialized by
EQL. (It's a code walker and methods are specialized by lisp
functions/special forms/macros/ ...) The problem seems to be in
get-normal-secondary-dispatch-function calling get-function calling
get-function-generator calling get-new-function-generator calling the
compiler with a lambda expression containing a very long argument list.
(Is this really necessary?)
Also, generate-discrimination-net seems to (in addition to running
a long time) produce a terrible algorithm. Instead of compiling
into a deeply nested conditional, I suggest a hashtable for all the
EQL methods (if there are more than some threshold number).
It is true that the Rainy Day PCL implementation of EQL specializers is
pretty bad. Its almost as bad as EQL specializers themselves! I am not
going to fix this, because PCL development is now essentially over.
In your particular case, where the code in question sounds like it is
program or at the very least macro generated, you might want to consider
switching away from using EQL specializers to using a hash table. Use
the hash table for the discrimination on individual objects (symbols in
your case) and use generic function for discrimination on classes.