From: Christophe R. <cs...@ca...> - 2006-01-12 15:38:00
|
Hi, I happened to look in on a build that was chugging along, and saw a note that struck me as odd: ; note: doing signed word to integer coercion (cost 20), for: ; the first argument of FIXNUMP This is weird because FIXNUMP is basically what is needed to see whether a signed word to integer coercion is necessary; this note is clearly unnecessary work. I boiled it down to (defun bar (x) (declare (type (signed-byte #.sb-vm:n-word-bits) x) (optimize speed)) (sb-int:fixnump (mod -2 x))) and indeed this indicates unneccesary work. I think fixing this just means implementing fixnump and check-fixnum vops for signed-num arguments, for all platforms, but before I think about doing that, have I missed something? Cheers, Christophe |