X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Fsubprim.lisp;h=a779d13d37d4a22ce1cf0d139eef011278899c41;hb=debae3c18d31b5222be4d5de8dcb2601336e24a4;hp=b30b3d12cfd432361c13d632414512311cf56710;hpb=4d132b6acf722b3cd1672477d6371224f22c9b27;p=sbcl.git diff --git a/src/compiler/x86-64/subprim.lisp b/src/compiler/x86-64/subprim.lisp index b30b3d1..a779d13 100644 --- a/src/compiler/x86-64/subprim.lisp +++ b/src/compiler/x86-64/subprim.lisp @@ -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) @@ -43,10 +44,7 @@ (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. @@ -80,3 +78,5 @@ DONE)) (define-static-fun length (object) :translate length) +(define-static-fun %coerce-callable-to-fun (callable) + :translate %coerce-callable-to-fun)