Microoptimize type-tests on x86oids.
authorStas Boukarev <stassats@gmail.com>
Sun, 28 Jul 2013 15:42:41 +0000 (19:42 +0400)
committerStas Boukarev <stassats@gmail.com>
Sun, 28 Jul 2013 15:46:09 +0000 (19:46 +0400)
commit2056118835600a7c4e372c796568ddada5824cf6
treea23bcbdcd9681e56540fadefee7feeeb8e5779ab
parent9ff18d7d6990b40f227f361174e4823db2b31d57
Microoptimize type-tests on x86oids.

On x86-64 in %test-lowtag instead of doing:

MOV EAX, ECX
AND AL, 15
CMP AL, 15
do
LEA EAX, [RCX-15]
TEST AL, 15

Which allows to save one byte.

On x86 this optimization is already applied, but since LEA loads a
32-bit integer, EAX can be later used as an already untagged pointer
in %test-headers: MOV EAX, [ECX-7] => MOV EAX, [EAX], which takes one
byte less to encode.
src/compiler/x86-64/type-vops.lisp
src/compiler/x86/type-vops.lisp