Clean up and micro-optimize list checking in some x86-64 VOPs.
[sbcl.git] / src / compiler / x86-64 / subprim.lisp
index 2079764..a779d13 100644 (file)
@@ -25,6 +25,7 @@
   (:policy :fast-safe)
   (:vop-var vop)
   (:save-p :compute-only)
+  (:ignore eax)
   (:generator 40
     ;; Move OBJECT into a temp we can bash on, and initialize the count.
     (move ptr object)
     (inst jmp :e DONE)
     ;; Otherwise, check to see whether we hit the end of a dotted list. If
     ;; not, loop back for more.
-    (move eax (make-dword-tn ptr))
-    (inst and al-tn lowtag-mask)
-    (inst cmp al-tn list-pointer-lowtag)
-    (inst jmp :e LOOP)
+    (%test-lowtag ptr LOOP nil list-pointer-lowtag)
     ;; It's dotted all right. Flame out.
     (error-call vop 'object-not-list-error ptr)
     ;; We be done.