diff --git a/compiler/mips/type-vops.lisp b/compiler/mips/type-vops.lisp index b3423303fa2b3b0720dec5e5db3b3c1c19874c39..c1eb9a8109084a89a6361599229836c9cd8143e9 100644 --- a/compiler/mips/type-vops.lisp +++ b/compiler/mips/type-vops.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/type-vops.lisp,v 1.36 1992/08/16 16:15:58 wlott Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/type-vops.lisp,v 1.37 1992/09/04 11:16:47 wlott Exp $") ;;; ;;; ********************************************************************** ;;; @@ -441,7 +441,10 @@ ;;; and the second digit all zeros. (defun unsigned-byte-32-test (value temp not-p target not-target) - (let ((nope (if not-p target not-target))) + (multiple-value-bind (yep nope) + (if not-p + (values not-target target) + (values target not-target)) (assemble () ;; Is it a fixnum? (inst and temp value 3) @@ -465,13 +468,9 @@ ;; Get the second digit. (loadw temp value (1+ bignum-digits-offset) other-pointer-type) ;; All zeros, its an (unsigned-byte 32). - (cond (not-p - (inst beq temp zero-tn not-target) - (inst bne temp zero-tn target)) - (t - (inst beq temp zero-tn target) - (inst bne temp zero-tn not-target))) + (inst beq temp zero-tn yep) (inst nop) + (inst b nope) SINGLE-WORD ;; Get the single digit.