- ((= nvals 1)
- (let ((no-values (gen-label)))
- (inst mov (tn-ref-tn values) *nil-value*)
- (inst jecxz no-values)
- (loadw (tn-ref-tn values) start -1)
- (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 cmp count (fixnumize i))
- (inst jmp :le default-lab)
- (sc-case tn
- ((descriptor-reg any-reg)
- (loadw tn start (- (1+ i))))
- ((control-stack)
- (loadw move-temp start (- (1+ i)))
- (inst mov tn move-temp)))))
- (let ((defaulting-done (gen-label)))
- (emit-label defaulting-done)
- (assemble (*elsewhere*)
- (dolist (def (defaults))
- (emit-label (car def))
- (inst mov (cdr def) *nil-value*))
- (inst jmp defaulting-done))))))
+ ((= nvals 1)
+ (let ((no-values (gen-label)))
+ (inst mov (tn-ref-tn values) nil-value)
+ (inst jecxz no-values)
+ (loadw (tn-ref-tn values) start -1)
+ (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 cmp count (fixnumize i))
+ (inst jmp :le default-lab)
+ (sc-case tn
+ ((descriptor-reg any-reg)
+ (loadw tn start (frame-word-offset i)))
+ ((control-stack)
+ (loadw move-temp start (frame-word-offset i))
+ (inst mov tn move-temp)))))
+ (let ((defaulting-done (gen-label)))
+ (emit-label defaulting-done)
+ (assemble (*elsewhere*)
+ (dolist (def (defaults))
+ (emit-label (car def))
+ (inst mov (cdr def) nil-value))
+ (inst jmp defaulting-done))))))