0.9.10.16:
[sbcl.git] / src / compiler / x86 / show.lisp
index 4d291f1..5fb38b9 100644 (file)
                :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
-    (inst push object)
+    ;; the stack should be 16-byte aligned on Darwin
+    #!-darwin (inst push object)
+    #!+darwin (progn (inst mov prev-stack-pointer esp-tn)
+                     (inst sub esp-tn n-word-bytes)
+                     (inst and esp-tn -16)
+                     (storew object esp-tn))
     (inst lea eax (make-fixup "debug_print" :foreign))
     (inst call (make-fixup "call_into_c" :foreign))
-    (inst add esp-tn n-word-bytes)
+    #!-darwin (inst add esp-tn n-word-bytes)
+    #!+darwin (inst mov esp-tn prev-stack-pointer)
     (move result eax)))