Microoptimize (signed-byte 64) type test on x86-64.
[sbcl.git] / src / compiler / x86-64 / type-vops.lisp
index 5f2e78f..0727ca6 100644 (file)
         (if not-p
             (values not-target target)
             (values target not-target))
-      (generate-fixnum-test value)
-      (inst jmp :e yep)
       (move-qword-to-eax value)
+      (inst test al-tn fixnum-tag-mask)
+      (inst jmp :e yep)
+
       (inst and al-tn lowtag-mask)
       (inst cmp al-tn other-pointer-lowtag)
       (inst jmp :ne nope)
               (values not-target target)
               (values target not-target))
         ;; Is it a fixnum?
-        ;; Is it a fixnum?
         (move rax-tn value)
         (inst test al-tn fixnum-tag-mask)
         (inst jmp :e fixnum)