X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmips%2Fsubprim.lisp;h=1e32827acd73d88d4e7c7538b4ba3f41d09b8c04;hb=bc1783335d78be988465e4fc7cf9c5fdb88a3fa4;hp=91fef15d7e6bc6d7d2b2c3b61bfda68150107fda;hpb=4ae1b794a5d6a90794468cf8017f5307f2c30dfe;p=sbcl.git diff --git a/src/compiler/mips/subprim.lisp b/src/compiler/mips/subprim.lisp index 91fef15..1e32827 100644 --- a/src/compiler/mips/subprim.lisp +++ b/src/compiler/mips/subprim.lisp @@ -11,7 +11,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) @@ -19,27 +19,27 @@ (:generator 50 (move ptr object) (move count zero-tn) - + LOOP - + (inst beq ptr null-tn done) (inst nop) - + (inst and temp ptr lowtag-mask) (inst xor temp list-pointer-lowtag) (inst bne temp zero-tn not-list) (inst nop) - + (loadw ptr ptr cons-cdr-slot list-pointer-lowtag) (inst b loop) (inst addu count count (fixnumize 1)) - + NOT-LIST (cerror-call vop done object-not-list-error ptr) - + DONE (move result count))) - + (define-static-fun length (object) :translate length)