Ray >Because the function make-vec4 wants boxed floats. Hence 4 notes. > > >I bet there are no notes for this function: > >(defun foobar3 (x y z w) > (declare (double-float x y z w)) > (make-vec4 :x x :y y :z z :w w)) > >Why? Because x, y, z, w are alread boxed, so the boxed value is >passed to make-vec4 directly. > >Ray > > > > So, all arguments to functions have to be boxed except for in certain special cases like #'+? Is there any way to find out, other than testing it, which functions are optimized in this way(open-coded?)? Can block compilation mitigate my problem, or is that only useful for keeping return values unboxed?
I think I just filled in a fundamental gap in my understanding here. I thought that "declare" statements in a function would alleviate the need for boxing its arguments, but apparently this is not the case. Thanks a lot for everyone's help. Jonathan
