Changes in directory llvm/lib/Target/X86:
X86JITInfo.cpp updated: 1.15 -> 1.16 --- Log message: Keep the stack from on darwin 16-byte aligned. This fixes many JIT failres. --- Diffs of the changes: (+13 -2) X86JITInfo.cpp | 15 +++++++++++++-- 1 files changed, 13 insertions(+), 2 deletions(-) Index: llvm/lib/Target/X86/X86JITInfo.cpp diff -u llvm/lib/Target/X86/X86JITInfo.cpp:1.15 llvm/lib/Target/X86/X86JITInfo.cpp:1.16 --- llvm/lib/Target/X86/X86JITInfo.cpp:1.15 Thu Jan 26 13:55:20 2006 +++ llvm/lib/Target/X86/X86JITInfo.cpp Tue Apr 25 15:54:26 2006 @@ -59,8 +59,19 @@ "movl %esp, %ebp\n" // Standard prologue "pushl %eax\n" "pushl %edx\n" // save EAX/EDX -#if defined(__CYGWIN__) || defined(__APPLE__) - "call _X86CompilationCallback2\n" +#if defined(__CYGWIN__) + "call _X86CompilationCallback2\n" +#elif defined(__APPLE__) + "movl 4(%ebp), %eax\n" // load the address of return address + "movl $24, %edx\n" // if the opcode of the instruction at the + "cmpb $-51, (%eax)\n" // return address is our 0xCD marker, then + "movl $12, %eax\n" // subtract 24 from %esp to realign it to 16 + "cmovne %eax, %edx\n" // bytes after the push of edx, the amount to. + "subl %edx, %esp\n" // the push of edx to keep it aligned. + "pushl %edx\n" // subtract. Otherwise, subtract 12 bytes after + "call _X86CompilationCallback2\n" + "popl %edx\n" + "addl %edx, %esp\n" #else "call X86CompilationCallback2\n" #endif _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits