Hi folks!  As a last-minute thing before I went on vacation, I figured
out how to change pcl so we can profile method calls.  The source,
in case there are problems, is currently in ~picasso/src/toolkit/etc/clos.cl
The implementation is very lightweight, so I think we can just leave it
compiled into the working version of picasso.  Below is some documentation
I pulled out of the file.  Let me know if there are problems or features
you'd like added.  In case of problems while I'm away, just comment out the
line in the source file that says '(pushnew :profiler *features*)' and
you'll be back to the old CLOS.  Have fun!

	Brian

--------------------------

The code keeps track of the number of calls to a method and the approximate
time spent in the method.  The resolution of this clock is about 20
milleseconds.  Note that this profiling data applies only to method
calls, not function calls.

The basic interface to the profiler is simple.  :profiler should be
on the *features* list to enable the profiling code to be generated.
The overhead of this code with profiling off is very low (two
compares with global variable and a couple of surrounding prog
structures), and so shouldn't be a performance issue for debugging use.
All modules to be profiled must be recompiled with :profiler on
the features list.  Once this is done, generation of profiling
statistics can be turned on and off using the prof:*profile*
global variable;  if this variable is non-nil, statistics are gathered,
otherwise they are not.  This mechanism allows fine tuned gathering of
profiling data under programmer control.  For example, to figure out
how time is spent inside the "foo" method, set prof:*profile* to "t"
as the first line of the method, and back to it's original value at
the exit point of the method.

The report generating facilities of the profiler are modeled after
the allegro profiler. The most useful functions are:

	method-call-report (&key number-to-report sort-by)
	method-call-clear ()

The first of these functions produces a sorted list showing the
number of times a method is called, the total time spent in a method,
and the average time spent in a method. The number-to-report keyword
controls how many records are printed (default is all), and the sort-by
keyword controls the ordering of the sorting and should be one of
the values :total-time, :average-time, or :calls (default is :total-time).
If given :total-time, the function sorts the list by the total time
spent in the method, if given :average-time, the function sorts the
list by the average time spent in the method, and if given :calls,
the function sorts the list by the number of calls to the method.

The method-call-clear function simply resets the data structures
holding the profiling statistics; it is used to seperate profiling
runs.  Note that unlike the allegro profiler, this function is not 
automatically called after method-call-report.
