| (defun foobar (v)
|   (declare (type vec4 v))
|   (make-vec4
|          :x (vec4-x v)
|          :y (vec4-y v)
|          :z (vec4-z v)
|          :w (vec4-w v)))
| 
| gives 4 coercion notes, one for each arg to make-vec4.  However, your 
| foo function compiles without any notes(except for the final return 
| value for foo). Why?  I can't seem to find a way to convince make-vec4 
| that I'm passing double-floats and that it doesn't need to box the 
| arguments.

Floats are passed to global functions by descriptors so the unboxed
values in the struct have to be boxed to passed to make-vec4. 

| If I pass constants, then I have no problems:

Constants are already boxed.

Paul
 


Reply via email to