1.0.3.44: x86-64 print vop preserves 16-byte stack alignment
authorCyrus Harmon <ch-sbcl@bobobeach.com>
Sun, 18 Mar 2007 17:36:55 +0000 (17:36 +0000)
committerCyrus Harmon <ch-sbcl@bobobeach.com>
Sun, 18 Mar 2007 17:36:55 +0000 (17:36 +0000)
 * rework the x86-64 print (really should be debug-print or some such)
   to preserve 16-byte stack alignment. This was breaking
   x86-64/darwin sb-show builds.

src/compiler/x86-64/show.lisp
version.lisp-expr

index ce47087..b94e4bf 100644 (file)
   (:results (result :scs (descriptor-reg)))
   (:save-p t)
   (:generator 100
-    (inst push object)
+    (move rax object)
+    (inst push rbp-tn)
+    (inst mov rbp-tn rsp-tn)
+    (inst push rbp-tn)
+    (inst and rsp-tn -16)
+    (storew rax rsp-tn)
     (inst lea rax (make-fixup "debug_print" :foreign))
     (inst lea call-target
           (make-ea :qword
                    :disp (make-fixup "call_into_c" :foreign)))
     (inst call call-target)
-    (inst add rsp-tn n-word-bytes)
+    (inst mov rsp-tn rbp-tn)
+    (inst pop rbp-tn)
     (move result rax)))
index 25fdc46..c6340dd 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.3.43"
+"1.0.3.44"