Use generated labels for the mips list length vop.
authorThiemo Seufer <ths@networkno.de>
Wed, 7 Sep 2005 23:27:45 +0000 (23:27 +0000)
committerThiemo Seufer <ths@networkno.de>
Wed, 7 Sep 2005 23:27:45 +0000 (23:27 +0000)
src/compiler/mips/subprim.lisp
version.lisp-expr

index 1e32827..28542c6 100644 (file)
   (: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)
-
-
-
index 6cf1325..210cfe6 100644 (file)
@@ -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"