1.0.13.10: x86 MOVE-FROM-SIGNED & MOVE-FROM-UNSIGNED hackery
commit28a6f6aef7408e55853f54f8603a259b7320b084
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 2 Jan 2008 12:04:08 +0000 (2 12:04 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 2 Jan 2008 12:04:08 +0000 (2 12:04 +0000)
treedeacec617dfccd7cc31f5d4d08e87e41ace39aef
parent7a0f4c68d94ff6c9a54c7605b6fd3cd8125c1c8c
1.0.13.10: x86 MOVE-FROM-SIGNED & MOVE-FROM-UNSIGNED hackery

 * SIGNED: use IMUL and JNO to fixnumize / check for overflow: just
   one branch, but same size as the old SHL 1 & JNO twice method --
   faster on modern x86en.

 * UNSIGNED: always do the LEA after TEST. If we need to allocate a
   bignum the LEA should be noise -- just one jump needed this way.

 * Move bignum allocation out-of-line in both -- shrinks the core a
   bit, and with any luck may help with cache effects: specialize the
   allocation routines for each GP register, and pass the argument and
   result in the same register to minimize the code-size at
   call-sites. Thanks to NJF for the nicer out-of-line version using
   just the single register.

 * Remove / clarify old comments, and get rid of the old commented out
   versions.
src/assembly/x86/alloc.lisp
src/compiler/x86/move.lisp
version.lisp-expr