X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Ftype-vops.lisp;h=0727ca69052e43f5c706c6aa4f0225565d1bcf75;hb=b2ed34b667665e52609cf431c00179b136be450d;hp=7c12dc37ed653cf4f689fe7b266d626750cfcb05;hpb=2056118835600a7c4e372c796568ddada5824cf6;p=sbcl.git diff --git a/src/compiler/x86-64/type-vops.lisp b/src/compiler/x86-64/type-vops.lisp index 7c12dc3..0727ca6 100644 --- a/src/compiler/x86-64/type-vops.lisp +++ b/src/compiler/x86-64/type-vops.lisp @@ -264,9 +264,10 @@ (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) @@ -306,8 +307,8 @@ (values not-target target) (values target not-target)) ;; Is it a fixnum? - (generate-fixnum-test value) (move rax-tn value) + (inst test al-tn fixnum-tag-mask) (inst jmp :e fixnum) ;; If not, is it an other pointer?