| (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
