More efficient integer=>word conversion and fixnump tests on x86-64
authorPaul Khuong <pvk@pvk.ca>
Mon, 20 May 2013 21:38:19 +0000 (17:38 -0400)
committerPaul Khuong <pvk@pvk.ca>
Tue, 21 May 2013 02:17:24 +0000 (22:17 -0400)
commit6794373d588cef4333fbbb9d04b931ae0a414a7f
treee3b925e8ddd415b3f1973a896d14ae7aad95b4bc
parent39117fb4cade75e692196cfca1ae3c320546a254
More efficient integer=>word conversion and fixnump tests on x86-64

 * Special-case on 63-bit fixnums to detect non-zero fixnum tag bits
   with a shift right when converting fixnum-or-bignum to ub64.

 * In fixnump/unsigned-byte-64, use MOVE to avoid useless mov x, x.

 * In fixnump/signed-byte-64, use the conversion's left shift to
   detect overflows.

 * Based on a patch by Douglas Katzman.
src/compiler/x86-64/move.lisp
src/compiler/x86-64/type-vops.lisp