((<= nvals register-arg-count)
(let ((regs-defaulted (gen-label)))
(note-this-location vop :unknown-return)
((<= nvals register-arg-count)
(let ((regs-defaulted (gen-label)))
(note-this-location vop :unknown-return)
(inst jmp-short regs-defaulted)
;; Default the unsupplied registers.
(let* ((2nd-tn-ref (tn-ref-across values))
(inst jmp-short regs-defaulted)
;; Default the unsupplied registers.
(let* ((2nd-tn-ref (tn-ref-across values))
(default-stack-slots (gen-label)))
(note-this-location vop :unknown-return)
;; Branch off to the MV case.
(default-stack-slots (gen-label)))
(note-this-location vop :unknown-return)
;; Branch off to the MV case.
(inst jmp-short regs-defaulted)
;; Do the single value case.
;; Default the register args
(inst jmp-short regs-defaulted)
;; Do the single value case.
;; Default the register args
(count-okay (gen-label)))
(note-this-location vop :unknown-return)
;; Branch off to the MV case.
(count-okay (gen-label)))
(note-this-location vop :unknown-return)
;; Branch off to the MV case.
(inst jmp-short regs-defaulted)
;; Default the register args, and set up the stack as if we
(inst jmp-short regs-defaulted)
;; Default the register args, and set up the stack as if we
- (storew (make-fixup nil :code-object return)
- rbp-tn (- (1+ (tn-offset ret-tn)))))
+ (inst lea return-label (make-fixup nil :code-object return))
+ (storew return-label rbp-tn (- (1+ (tn-offset ret-tn)))))
- (storew (make-fixup nil :code-object return)
- rbp-tn (- (1+ (tn-offset ret-tn)))))
+ (inst lea return-label (make-fixup nil :code-object return))
+ (storew return-label rbp-tn (- (1+ (tn-offset ret-tn)))))
- (storew (make-fixup nil :code-object return)
- rbp-tn (- (1+ (tn-offset ret-tn)))))
+ (inst lea return-label (make-fixup nil :code-object return))
+ (storew return-label rbp-tn (- (1+ (tn-offset ret-tn)))))
(ret-addr))
(:temporary (:sc unsigned-reg :offset rsi-offset :from (:argument 0)) rsi)
(:temporary (:sc unsigned-reg :offset rax-offset :from (:argument 1)) rax)
(ret-addr))
(:temporary (:sc unsigned-reg :offset rsi-offset :from (:argument 0)) rsi)
(:temporary (:sc unsigned-reg :offset rax-offset :from (:argument 1)) rax)
(:temporary (:sc unsigned-reg :offset rsi-offset :from (:argument 2)) rsi)
(:temporary (:sc unsigned-reg :offset rcx-offset :from (:argument 3)) rcx)
(:temporary (:sc unsigned-reg :offset rbx-offset :from (:eval 0)) rbx)
(:temporary (:sc unsigned-reg :offset rsi-offset :from (:argument 2)) rsi)
(:temporary (:sc unsigned-reg :offset rcx-offset :from (:argument 3)) rcx)
(:temporary (:sc unsigned-reg :offset rbx-offset :from (:eval 0)) rbx)
(:temporary (:sc descriptor-reg :offset (first *register-arg-offsets*)
:from (:eval 0)) a0)
(:temporary (:sc unsigned-reg :from (:eval 1)) old-fp-temp)
(:temporary (:sc descriptor-reg :offset (first *register-arg-offsets*)
:from (:eval 0)) a0)
(:temporary (:sc unsigned-reg :from (:eval 1)) old-fp-temp)
(inst lea dst (make-ea :byte :base dst :disp list-pointer-lowtag))
;; Convert the count into a raw value, so that we can use the
;; LOOP instruction.
(inst lea dst (make-ea :byte :base dst :disp list-pointer-lowtag))
;; Convert the count into a raw value, so that we can use the
;; LOOP instruction.