arm64/return: store to (thread-mv-count) first

This commit is contained in:
Stas Boukarev 2026-09-02 10:48:00 +03:00
parent c8d0ca77a9
commit 0b7c732828

View file

@ -1390,6 +1390,7 @@
(dolist (reg (subseq (list r0 r1 r2 r3) nvals)) (dolist (reg (subseq (list r0 r1 r2 r3) nvals))
(move reg null-tn))) (move reg null-tn)))
(when (> nvals register-arg-count) (when (> nvals register-arg-count)
(inst strb nargs (thread-mv-count)) ;; reserve space before storing anything
(do ((tn-ref (do ((i register-arg-count (1- i)) ; skip over this many (do ((tn-ref (do ((i register-arg-count (1- i)) ; skip over this many
(ref values (tn-ref-across ref))) (ref values (tn-ref-across ref)))
((zerop i) ref)) ((zerop i) ref))
@ -1411,8 +1412,7 @@
(inst str tmp-tn ea)) (inst str tmp-tn ea))
((immediate) ((immediate)
(load-immediate vop tn tmp-tn) (load-immediate vop tn tmp-tn)
(inst str tmp-tn ea))))) (inst str tmp-tn ea))))))
(inst strb nargs (thread-mv-count)))
(move csp-tn cfp-tn) (move csp-tn cfp-tn)
(lisp-return lr :multiple-values t))))) (lisp-return lr :multiple-values t)))))