From: Nikodemus S. <de...@us...> - 2008-05-30 17:29:31
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv16153/src/runtime Modified Files: x86-assem.S Log Message: 1.0.17.10: correct stack alignment for alloc() calls on Darwin/x86 * 16 bytes at the point of call, not 16 bytes at some random-point- then-push-two-words. Index: x86-assem.S =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-assem.S,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- x86-assem.S 15 May 2008 15:37:50 -0000 1.49 +++ x86-assem.S 30 May 2008 17:29:27 -0000 1.50 @@ -435,9 +435,9 @@ #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 */ |