X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Ftype-vops.lisp;h=7c12dc37ed653cf4f689fe7b266d626750cfcb05;hb=2056118835600a7c4e372c796568ddada5824cf6;hp=589b2cb792f0164f1a321fb8dc9fc8386831eea2;hpb=9ff18d7d6990b40f227f361174e4823db2b31d57;p=sbcl.git diff --git a/src/compiler/x86-64/type-vops.lisp b/src/compiler/x86-64/type-vops.lisp index 589b2cb..7c12dc3 100644 --- a/src/compiler/x86-64/type-vops.lisp +++ b/src/compiler/x86-64/type-vops.lisp @@ -80,10 +80,9 @@ (%test-headers value target not-p nil headers drop-through)) (defun %test-lowtag (value target not-p lowtag) - (move-qword-to-eax value) - (inst and al-tn lowtag-mask) - (inst cmp al-tn lowtag) - (inst jmp (if not-p :ne :e) target)) + (inst lea eax-tn (make-ea :dword :base value :disp (- lowtag))) + (inst test al-tn lowtag-mask) + (inst jmp (if not-p :nz :z) target)) (defun %test-headers (value target not-p function-p headers &optional (drop-through (gen-label)))