- ((= nvals 1)
- (let ((no-values (gen-label)))
- (move null-tn (tn-ref-tn values))
- (inst beq count no-values)
- (loadw (tn-ref-tn values) start)
- (emit-label no-values)))
- (t
- (collect ((defaults))
- (do ((i 0 (1+ i))
- (tn-ref values (tn-ref-across tn-ref)))
- ((null tn-ref))
- (let ((default-lab (gen-label))
- (tn (tn-ref-tn tn-ref)))
- (defaults (cons default-lab tn))
-
- (inst move count temp)
- (inst lda count (fixnumize -1) count)
- (inst beq temp default-lab)
- (sc-case tn
- ((descriptor-reg any-reg)
- (loadw tn start i))
- (control-stack
- (loadw move-temp start i)
- (store-stack-tn tn move-temp)))))
-
- (let ((defaulting-done (gen-label)))
-
- (emit-label defaulting-done)
-
- (assemble (*elsewhere*)
- (dolist (def (defaults))
- (emit-label (car def))
- (let ((tn (cdr def)))
- (sc-case tn
- ((descriptor-reg any-reg)
- (move null-tn tn))
- (control-stack
- (store-stack-tn tn null-tn)))))
- (inst br zero-tn defaulting-done))))))
+ ((= nvals 1)
+ (let ((no-values (gen-label)))
+ (move null-tn (tn-ref-tn values))
+ (inst beq count no-values)
+ (loadw (tn-ref-tn values) start)
+ (emit-label no-values)))
+ (t
+ (collect ((defaults))
+ (do ((i 0 (1+ i))
+ (tn-ref values (tn-ref-across tn-ref)))
+ ((null tn-ref))
+ (let ((default-lab (gen-label))
+ (tn (tn-ref-tn tn-ref)))
+ (defaults (cons default-lab tn))
+
+ (inst move count temp)
+ (inst lda count (fixnumize -1) count)
+ (inst beq temp default-lab)
+ (sc-case tn
+ ((descriptor-reg any-reg)
+ (loadw tn start i))
+ (control-stack
+ (loadw move-temp start i)
+ (store-stack-tn tn move-temp)))))
+
+ (let ((defaulting-done (gen-label)))
+
+ (emit-label defaulting-done)
+
+ (assemble (*elsewhere*)
+ (dolist (def (defaults))
+ (emit-label (car def))
+ (let ((tn (cdr def)))
+ (sc-case tn
+ ((descriptor-reg any-reg)
+ (move null-tn tn))
+ (control-stack
+ (store-stack-tn tn null-tn)))))
+ (inst br zero-tn defaulting-done))))))