X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Falpha%2Fsubprim.lisp;h=b3185d151829ce37eafd2b624ce748826b918e81;hb=ef0891e470ff35840def7a5717ede18a58266e76;hp=d81cf12eb795249444aa774408acdf6e5a5b960e;hpb=f43f136f9b3ff6cae501e850fa67b2183317e212;p=sbcl.git diff --git a/src/compiler/alpha/subprim.lisp b/src/compiler/alpha/subprim.lisp index d81cf12..b3185d1 100644 --- a/src/compiler/alpha/subprim.lisp +++ b/src/compiler/alpha/subprim.lisp @@ -20,7 +20,7 @@ (:temporary (:scs (descriptor-reg) :from (:argument 0)) ptr) (:temporary (:scs (non-descriptor-reg)) temp) (:temporary (:scs (any-reg) :type fixnum :to (:result 0) :target result) - count) + count) (:results (result :scs (any-reg descriptor-reg))) (:policy :fast-safe) (:vop-var vop) @@ -28,24 +28,24 @@ (:generator 50 (move object ptr) (move zero-tn count) - + LOOP - + (inst cmpeq ptr null-tn temp) (inst bne temp done) - + (inst and ptr lowtag-mask temp) (inst xor temp list-pointer-lowtag temp) (inst bne temp not-list) - + (loadw ptr ptr cons-cdr-slot list-pointer-lowtag) (inst addq count (fixnumize 1) count) (inst br zero-tn loop) - + NOT-LIST (cerror-call vop done object-not-list-error ptr) - + DONE (move count result))) - + (define-static-fun length (object) :translate length)