mirror of
https://github.com/corda/corda.git
synced 2025-03-14 16:26:36 +00:00
ensure stack remains aligned in compile-x86.S
If AVIAN_USE_FRAME_POINTER is not defined, the caller of vmInvoke will calculate a frame size which assumes vmInvoke does not push rbp on the stack before allocating the frame. However, vmInvoke pushes rbp reguardless, so we need to adjust the frame size to ensure the stack remains aligned.
This commit is contained in:
parent
d4c39e07a2
commit
78a80534e6
@ -26,9 +26,15 @@
|
||||
#define THREAD_STACK 2224
|
||||
#define THREAD_SCRATCH 2232
|
||||
|
||||
#ifdef AVIAN_USE_FRAME_POINTER
|
||||
# define ALIGNMENT_ADJUSTMENT 0
|
||||
#else
|
||||
# define ALIGNMENT_ADJUSTMENT 8
|
||||
#endif
|
||||
|
||||
#if defined __MINGW32__ || defined __CYGWIN32__
|
||||
|
||||
#define CALLEE_SAVED_REGISTER_FOOTPRINT 64
|
||||
#define CALLEE_SAVED_REGISTER_FOOTPRINT 64 + ALIGNMENT_ADJUSTMENT
|
||||
|
||||
.globl GLOBAL(vmInvoke)
|
||||
GLOBAL(vmInvoke):
|
||||
@ -163,7 +169,7 @@ LOCAL(vmJumpAndInvoke_argumentTest):
|
||||
|
||||
#else // not __MINGW32__ || __CYGWIN32__
|
||||
|
||||
#define CALLEE_SAVED_REGISTER_FOOTPRINT 48
|
||||
#define CALLEE_SAVED_REGISTER_FOOTPRINT 48 + ALIGNMENT_ADJUSTMENT
|
||||
|
||||
.globl GLOBAL(vmInvoke)
|
||||
GLOBAL(vmInvoke):
|
||||
@ -296,7 +302,13 @@ LOCAL(vmJumpAndInvoke_argumentTest):
|
||||
#define THREAD_STACK 2148
|
||||
#define THREAD_SCRATCH 2152
|
||||
|
||||
#define CALLEE_SAVED_REGISTER_FOOTPRINT 16
|
||||
#ifdef AVIAN_USE_FRAME_POINTER
|
||||
# define ALIGNMENT_ADJUSTMENT 0
|
||||
#else
|
||||
# define ALIGNMENT_ADJUSTMENT 12
|
||||
#endif
|
||||
|
||||
#define CALLEE_SAVED_REGISTER_FOOTPRINT 16 + ALIGNMENT_ADJUSTMENT
|
||||
|
||||
.globl GLOBAL(vmInvoke)
|
||||
GLOBAL(vmInvoke):
|
||||
|
Loading…
x
Reference in New Issue
Block a user