- ((= nvals 1)
- (inst comclr count zero-tn zero-tn :<>)
- (inst move null-tn (tn-ref-tn values) :tr)
- (loadw (tn-ref-tn values) start))
- (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 bci := nil (fixnumize i) count 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*)
- (do ((defs (defaults) (cdr defs)))
- ((null defs))
- (let ((def (car defs)))
- (emit-label (car def))
- (unless (cdr defs)
- (inst b defaulting-done))
- (let ((tn (cdr def)))
- (sc-case tn
- ((descriptor-reg any-reg)
- (move null-tn tn))
- (control-stack
- (store-stack-tn tn null-tn)))))))))))
+ ((= nvals 1)
+ (inst comclr count zero-tn zero-tn :<>)
+ (inst move null-tn (tn-ref-tn values) :tr)
+ (loadw (tn-ref-tn values) start))
+ (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 bci := nil (fixnumize i) count 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*)
+ (do ((defs (defaults) (cdr defs)))
+ ((null defs))
+ (let ((def (car defs)))
+ (emit-label (car def))
+ (unless (cdr defs)
+ (inst b defaulting-done))
+ (let ((tn (cdr def)))
+ (sc-case tn
+ ((descriptor-reg any-reg)
+ (move null-tn tn))
+ (control-stack
+ (store-stack-tn tn null-tn)))))))))))