From dc6e685751c1baaa93081bac63aca2201df9b8ee Mon Sep 17 00:00:00 2001 From: Thiemo Seufer Date: Wed, 7 Sep 2005 23:27:45 +0000 Subject: [PATCH] Use generated labels for the mips list length vop. --- src/compiler/mips/subprim.lisp | 38 ++++++++++++++++++-------------------- version.lisp-expr | 2 +- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/compiler/mips/subprim.lisp b/src/compiler/mips/subprim.lisp index 1e32827..28542c6 100644 --- a/src/compiler/mips/subprim.lisp +++ b/src/compiler/mips/subprim.lisp @@ -17,31 +17,29 @@ (:vop-var vop) (:save-p :compute-only) (:generator 50 - (move ptr object) - (move count zero-tn) + (let ((done (gen-label)) + (loop (gen-label)) + (not-list (gen-label))) + (move ptr object) + (move count zero-tn) - LOOP + (emit-label loop) - (inst beq ptr null-tn done) - (inst nop) + (inst beq ptr null-tn done) + (inst and temp ptr lowtag-mask) + (inst xor temp list-pointer-lowtag) + (inst bne temp zero-tn not-list) + (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)) - (loadw ptr ptr cons-cdr-slot list-pointer-lowtag) - (inst b loop) - (inst addu count count (fixnumize 1)) + (emit-label not-list) + (cerror-call vop done object-not-list-error ptr) - NOT-LIST - (cerror-call vop done object-not-list-error ptr) - - DONE - (move result count))) + (emit-label done) + (move result count)))) (define-static-fun length (object) :translate length) - - - diff --git a/version.lisp-expr b/version.lisp-expr index 6cf1325..210cfe6 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.9.4.43" +"0.9.4.44" -- 1.7.10.4