corda/src
Joel Dice 3696edeb1e fix stack alignment bug in vmJumpAndInvoke
This was causing crashes on 32-bit OS X continuations=true builds.

There were two important differences between vmInvoke and
vmJumpAndInvoke: (1) vmInvoke expects its stack to be aligned on
entry, modulo the return address whereas the stack argument to
vmJumpAndInvoke is aligned without allowing for the return address,
and (2) vmInvoke pushes EBP before doing its frame allocation, whereas
vmJumpAndInvoke did not take that into account.  So in order for
vmJumpAndInvoke to allocate the exact same frame size that vmInvoke
would have when calling the same method, it needed to add an extra two
words beyond what it was already allocating.

Aside from alignment concerns, the code is not particularly sensitive
to vmJumpAndInvoke allocating a different frame size than vmInvoke,
since we store the frame pointer in a "thread local" variable:

   // remember this stack position, since we won't be able to rely on
   // %rbp being restored when the call returns
   movl   8(%ebp),%eax
   movl   %esp,TARGET_THREAD_SCRATCH(%eax)
...
GLOBAL(vmInvoke_returnAddress):
   // restore stack pointer
   movl   TARGET_THREAD_SCRATCH(%ebx),%esp

My original patch makes an equivalent change for the 64-bit changes,
but I'll leave that for after we release 1.0 since we're in
bugfix-only mode right now
2014-05-08 09:20:12 -06:00
..
android fix Android classpath build 2013-07-05 14:36:16 -06:00
avian remove powerpc support 2014-04-29 13:26:40 -06:00
codegen remove powerpc support 2014-04-29 13:26:40 -06:00
heap update copyright years 2014-04-23 15:33:41 -06:00
lzma fix endianess bug in LZMA decoding 2012-06-06 12:58:24 -06:00
openjdk update copyright years 2014-04-23 15:33:41 -06:00
system update copyright years 2014-04-23 15:33:41 -06:00
tools remove powerpc support 2014-04-29 13:26:40 -06:00
util update copyright years 2014-04-23 15:33:41 -06:00
arm.masm update copyright years 2014-04-23 15:33:41 -06:00
arm.S update copyright years 2014-04-23 15:33:41 -06:00
boot-javahome.cpp update copyright years 2014-04-23 15:33:41 -06:00
boot.cpp update copyright years 2014-04-23 15:33:41 -06:00
bootimage-fields.cpp add optional LZMA support for compressing embedded JARs, boot images, and shared objects 2012-06-02 09:06:22 -06:00
bootimage-template.cpp fix msvc build 2013-03-04 11:09:59 -07:00
builtin.cpp update copyright years 2014-04-23 15:33:41 -06:00
classpath-android.cpp add Field.getDeclaredAnnotations default method for android classpath (fixes Reflection test) 2014-05-07 14:48:21 -06:00
classpath-avian.cpp update copyright years 2014-04-23 15:33:41 -06:00
classpath-openjdk.cpp remove powerpc support 2014-04-29 13:26:40 -06:00
compile-arm.masm update copyright years 2014-04-23 15:33:41 -06:00
compile-arm.S update copyright years 2014-04-23 15:33:41 -06:00
compile-x86.masm update copyright years 2014-04-23 15:33:41 -06:00
compile-x86.S fix stack alignment bug in vmJumpAndInvoke 2014-05-08 09:20:12 -06:00
compile.cpp remove powerpc support 2014-04-29 13:26:40 -06:00
continuations-x86.S update copyright years 2014-04-23 15:33:41 -06:00
embed.cpp update copyright years 2014-04-23 15:33:41 -06:00
embedded-loader.cpp update copyright years 2014-04-23 15:33:41 -06:00
finder.cpp update copyright years 2014-04-23 15:33:41 -06:00
heapdump.cpp update copyright years 2014-04-23 15:33:41 -06:00
heapwalk.cpp update copyright years 2014-04-23 15:33:41 -06:00
interpret.cpp update copyright years 2014-04-23 15:33:41 -06:00
jnienv.cpp update copyright years 2014-04-23 15:33:41 -06:00
lzma-decode.cpp update copyright years 2014-04-23 15:33:41 -06:00
lzma-encode.cpp update copyright years 2014-04-23 15:33:41 -06:00
machine.cpp Merge pull request #245 from dicej/jdk8 2014-04-24 18:50:38 -06:00
main.cpp update copyright years 2014-04-23 15:33:41 -06:00
powerpc-regs.S enable Linux PowerPC build 2011-02-26 12:45:22 -07:00
process.cpp update copyright years 2014-04-23 15:33:41 -06:00
thunks.cpp make sure a busy-waiting loop can't block the GC (and hence the whole VM) 2013-12-13 10:39:36 -07:00
types.def add support for using the OpenJDK 8 class library 2014-04-23 15:36:56 -06:00
util.cpp update copyright years 2014-04-23 15:33:41 -06:00
x86.masm update copyright years 2014-04-23 15:33:41 -06:00
x86.S update copyright years 2014-04-23 15:33:41 -06:00