1.0.17.10: correct stack alignment for alloc() calls on Darwin/x86
authorNikodemus Siivola <nikodemus@random-state.net>
Fri, 30 May 2008 17:29:27 +0000 (17:29 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Fri, 30 May 2008 17:29:27 +0000 (17:29 +0000)
 * 16 bytes at the point of call, not 16 bytes at some random-point-
   then-push-two-words.

src/runtime/x86-assem.S
version.lisp-expr

index e336bdd..4a5090c 100644 (file)
@@ -435,9 +435,9 @@ GNAME(do_pending_interrupt):
 #define ALLOC(size)                                             \
         pushl   %ebp;              /* Save EBP               */ \
         movl    %esp,%ebp;         /* Save ESP to EBP        */ \
-        andl    $0xfffffff0,%esp;  /* Align stack            */ \
-        pushl   $0;                /* Padding                */ \
-        pushl   size;              /* Argument to alloc      */ \
+        pushl   $0;                /* Reserve space for arg  */ \
+        andl    $0xfffffff0,%esp;  /* Align stack to 16bytes */ \
+        movl    size, (%esp);      /* Argument to alloc      */ \
         call    GNAME(alloc);                                   \
         movl    %ebp,%esp;         /* Restore ESP from EBP   */ \
         popl    %ebp;              /* Restore EBP            */
index e572e1b..bc370fd 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.17.9"
+"1.0.17.10"