X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fcall.lisp;h=fa1c56da1fe7885a6a92430989bde2bb575fc542;hb=11f02398a1a9ccbde847c82fd233e8378e45c29c;hp=a2efd33181150773add20f7cfad6e0bb6cf41968;hpb=237ecea4a44f33d40440ea40c67c54e9e23358b3;p=sbcl.git diff --git a/src/compiler/x86/call.lisp b/src/compiler/x86/call.lisp index a2efd33..fa1c56d 100644 --- a/src/compiler/x86/call.lisp +++ b/src/compiler/x86/call.lisp @@ -385,8 +385,11 @@ (done (gen-label))) (inst jmp-short variable-values) - (inst mov start esp-tn) - (inst push (first *register-arg-tns*)) + (cond ((location= start (first *register-arg-tns*)) + (inst push (first *register-arg-tns*)) + (inst lea start (make-ea :dword :base esp-tn :disp 4))) + (t (inst mov start esp-tn) + (inst push (first *register-arg-tns*)))) (inst mov count (fixnumize 1)) (inst jmp done) @@ -642,8 +645,9 @@ (inst pop ebp-tn)) (t - (cerror "Continue any-way" - "VOP return-local doesn't work if old-fp (in slot %s) is not in slot 0" + (cerror "Continue anyway" + "VOP return-local doesn't work if old-fp (in slot ~ + ~S) is not in slot 0" (tn-offset old-fp))))) ((any-reg descriptor-reg)