From: Erik Huelsmann <ehuels@gm...>  20090211 13:53:20

I've monitored the clbench results with respect to the latest changes for better unboxed type use. The TAK code roughly looks like this: (defun TAK (x y z) (declare (fixnum x y z)) (if (< 20 z) z (tak (tak (1+ x) y z) (tak x (1+ y) z) (tak x y (1+ z))))) What happens is this: Upon entry of the function, the variables x y z are unboxed into 'int's. Then, x and y are used exactly once in their unboxed version: in the 1+ form. The other 2 times, they're reboxed and the boxed value is passed into the TAK invocation. For z the same is true, except that its unboxed value is used twice. What I'm trying to tell you? Well, to improve performance here, we have 2 options: * be smarter about boxing and unboxing; keeping statistics on the representation required; choosing the mostoftenrequired representation as the default form * be smarter about argument and returnvalue passing: try to create functions  local functions and recursive function calls  which can receive and return unboxed values. I suppose the latter is the preferred solution as in case of the TAK example, it would allow for 3 unboxings and 1 reboxing regardless of the values passed for the arguments. If anybody is looking for a nice project to work on, this could be it. Bye, Erik. 