- (%test-lowtag value when-false t lowtag :temp temp)
- (load-type temp value (- lowtag))
- (inst nop)
- (let ((delta 0))
- (do ((remaining headers (cdr remaining)))
- ((null remaining))
- (let ((header (car remaining))
- (last (null (cdr remaining))))
- (cond
- ((atom header)
- (inst subu temp (- header delta))
- (setf delta header)
- (if last
- (if not-p
- (inst bne temp zero-tn target)
- (inst beq temp zero-tn target))
- (inst beq temp zero-tn when-true)))
- (t
- (let ((start (car header))
- (end (cdr header)))
- (unless (= start bignum-widetag)
- (inst subu temp (- start delta))
- (setf delta start)
- (inst bltz temp when-false))
- (inst subu temp (- end delta))
- (setf delta end)
- (if last
- (if not-p
- (inst bgtz temp target)
- (inst blez temp target))
- (inst blez temp when-true))))))))
- (inst nop)
- (emit-label drop-through)))))
+ (%test-lowtag value when-false t lowtag :temp temp)
+ (load-type temp value (- lowtag))
+ (inst nop)
+ (let ((delta 0))
+ (do ((remaining headers (cdr remaining)))
+ ((null remaining))
+ (let ((header (car remaining))
+ (last (null (cdr remaining))))
+ (cond
+ ((atom header)
+ (inst subu temp (- header delta))
+ (setf delta header)
+ (if last
+ (if not-p
+ (inst bne temp target)
+ (inst beq temp target))
+ (inst beq temp when-true)))
+ (t
+ (let ((start (car header))
+ (end (cdr header)))
+ (unless (= start bignum-widetag)
+ (inst subu temp (- start delta))
+ (setf delta start)
+ (inst bltz temp when-false))
+ (inst subu temp (- end delta))
+ (setf delta end)
+ (if last
+ (if not-p
+ (inst bgtz temp target)
+ (inst blez temp target))
+ (inst blez temp when-true))))))))
+ (inst nop)
+ (emit-label drop-through)))))