X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Fx86-64%2Fassem-rtns.lisp;h=528961575d194d776a159fd321e7a2d660dcff1d;hb=22a6702974b7d6ff4e8f2b3b7b5ff446fc632de0;hp=bd708897ff279b329da9c151791a251528d7a1ce;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/src/assembly/x86-64/assem-rtns.lisp b/src/assembly/x86-64/assem-rtns.lisp index bd70889..5289615 100644 --- a/src/assembly/x86-64/assem-rtns.lisp +++ b/src/assembly/x86-64/assem-rtns.lisp @@ -67,6 +67,7 @@ (loadw esi ebx -3) ;; And back we go. + (inst stc) (inst jmp eax) ;; Handle the register arg cases. @@ -75,13 +76,14 @@ (inst mov edx nil-value) (inst mov edi edx) (inst mov esi edx) + (inst stc) (inst jmp eax) ONE-VALUE ; Note: we can get this, because the return-multiple vop ; doesn't check for this case when size > speed. (loadw edx esi -1) (inst mov rsp-tn ebx) - (inst add eax 3) + (inst clc) (inst jmp eax) TWO-VALUES @@ -89,6 +91,7 @@ (loadw edi esi -2) (inst mov esi nil-value) (inst lea rsp-tn (make-ea :qword :base ebx :disp (* -2 n-word-bytes))) + (inst stc) (inst jmp eax) THREE-VALUES @@ -96,6 +99,7 @@ (loadw edi esi -2) (loadw esi esi -3) (inst lea rsp-tn (make-ea :qword :base ebx :disp (* -3 n-word-bytes))) + (inst stc) (inst jmp eax)) ;;;; TAIL-CALL-VARIABLE