X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fshow.lisp;h=04b63e183d3e6bcc8c131a822d573e570594b7d0;hb=08917ec0d00a781a1089922a5419b7f136cdf08f;hp=4d291f10c39ed28f498d48acc5e01de102926426;hpb=0d871fd7a98fc4af92a8b942a1154761466ad8c9;p=sbcl.git diff --git a/src/compiler/x86/show.lisp b/src/compiler/x86/show.lisp index 4d291f1..04b63e1 100644 --- a/src/compiler/x86/show.lisp +++ b/src/compiler/x86/show.lisp @@ -22,11 +22,26 @@ :from :eval :to (:result 0)) eax) + #!+darwin + (:temporary (:sc unsigned-reg + :offset esi-offset) + prev-stack-pointer) (:results (result :scs (descriptor-reg))) (:save-p t) (:generator 100 + #!-darwin (inst push object) + #!+darwin + (progn + ;; the stack should be 16-byte aligned on Darwin + (inst mov prev-stack-pointer esp-tn) + (inst sub esp-tn n-word-bytes) + (align-stack-pointer esp-tn) + (storew object esp-tn)) (inst lea eax (make-fixup "debug_print" :foreign)) (inst call (make-fixup "call_into_c" :foreign)) + #!-darwin (inst add esp-tn n-word-bytes) + #!+darwin + (inst mov esp-tn prev-stack-pointer) (move result eax)))