mirror of
https://github.com/corda/corda.git
synced 2025-01-08 14:03:06 +00:00
Merge branch 'master' of oss.readytalk.com:/var/local/git/avian
This commit is contained in:
commit
329ee6bbe4
@ -125,7 +125,7 @@ GLOBAL(vmJumpAndInvoke):
|
|||||||
movq %rcx,%rbx
|
movq %rcx,%rbx
|
||||||
|
|
||||||
// set return address
|
// set return address
|
||||||
movq vmInvoke_returnAddress@GOTPCREL(%rip),%r10
|
movq GLOBAL(vmInvoke_returnAddress)@GOTPCREL(%rip),%r10
|
||||||
movq %r10,(%r9)
|
movq %r10,(%r9)
|
||||||
|
|
||||||
// copy arguments into place
|
// copy arguments into place
|
||||||
@ -154,7 +154,7 @@ LOCAL(vmJumpAndInvoke_argumentTest):
|
|||||||
int3
|
int3
|
||||||
#endif // not AVIAN_CONTINUATIONS
|
#endif // not AVIAN_CONTINUATIONS
|
||||||
|
|
||||||
#else // not __MINGW32__ ||__CYGWIN32__
|
#else // not __MINGW32__ || __CYGWIN32__
|
||||||
|
|
||||||
#define CALLEE_SAVED_REGISTER_FOOTPRINT 48
|
#define CALLEE_SAVED_REGISTER_FOOTPRINT 48
|
||||||
|
|
||||||
@ -252,7 +252,7 @@ GLOBAL(vmJumpAndInvoke):
|
|||||||
movq %rdi,%rbx
|
movq %rdi,%rbx
|
||||||
|
|
||||||
// set return address
|
// set return address
|
||||||
movq vmInvoke_returnAddress@GOTPCREL(%rip),%r10
|
movq GLOBAL(vmInvoke_returnAddress)@GOTPCREL(%rip),%r10
|
||||||
movq %r10,(%rcx)
|
movq %r10,(%rcx)
|
||||||
|
|
||||||
// copy arguments into place
|
// copy arguments into place
|
||||||
@ -400,8 +400,13 @@ GLOBAL(vmJumpAndInvoke):
|
|||||||
movl $vmInvoke_returnAddress,%esi
|
movl $vmInvoke_returnAddress,%esi
|
||||||
#else
|
#else
|
||||||
call LOCAL(getPC)
|
call LOCAL(getPC)
|
||||||
|
# if defined __APPLE__
|
||||||
|
LOCAL(vmJumpAndInvoke_offset):
|
||||||
|
leal vmInvoke_returnAddress-LOCAL(vmJumpAndInvoke_offset)(%esi),%esi
|
||||||
|
# else
|
||||||
addl $_GLOBAL_OFFSET_TABLE_,%esi
|
addl $_GLOBAL_OFFSET_TABLE_,%esi
|
||||||
movl vmInvoke_returnAddress@GOT(%esi),%esi
|
movl vmInvoke_returnAddress@GOT(%esi),%esi
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
movl %esi,(%ecx)
|
movl %esi,(%ecx)
|
||||||
|
|
||||||
|
@ -1886,7 +1886,7 @@ makeCurrentContinuation(MyThread* t, void** targetIp, void** targetBase,
|
|||||||
*targetIp = ip;
|
*targetIp = ip;
|
||||||
*targetBase = base;
|
*targetBase = base;
|
||||||
*targetStack = static_cast<void**>(stack)
|
*targetStack = static_cast<void**>(stack)
|
||||||
+ t->arch->frameReturnAddressSize();;
|
+ t->arch->frameReturnAddressSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ LOCAL(vmInvoke_continuationTest):
|
|||||||
|
|
||||||
// set the return address to vmInvoke_returnAddress
|
// set the return address to vmInvoke_returnAddress
|
||||||
movq CONTINUATION_RETURN_ADDRESS_OFFSET(%rcx),%rdi
|
movq CONTINUATION_RETURN_ADDRESS_OFFSET(%rcx),%rdi
|
||||||
movq vmInvoke_returnAddress@GOTPCREL(%rip),%r10
|
movq GLOBAL(vmInvoke_returnAddress)@GOTPCREL(%rip),%r10
|
||||||
movq %r10,(%rsp,%rdi,1)
|
movq %r10,(%rsp,%rdi,1)
|
||||||
|
|
||||||
// save the current base pointer in the frame and update it
|
// save the current base pointer in the frame and update it
|
||||||
@ -103,9 +103,11 @@ LOCAL(vmInvoke_exit):
|
|||||||
cmpl $0,%ecx
|
cmpl $0,%ecx
|
||||||
je LOCAL(vmInvoke_exit)
|
je LOCAL(vmInvoke_exit)
|
||||||
|
|
||||||
// allocate a frame of size (continuation.length * BYTES_PER_WORD)
|
// allocate a frame of size (continuation.length * BYTES_PER_WORD),
|
||||||
|
// plus stack alignment padding
|
||||||
movl CONTINUATION_LENGTH(%ecx),%esi
|
movl CONTINUATION_LENGTH(%ecx),%esi
|
||||||
shll $2,%esi
|
shll $2,%esi
|
||||||
|
leal 8(%esi),%esi
|
||||||
subl %esi,%esp
|
subl %esi,%esp
|
||||||
|
|
||||||
// copy the continuation body into the frame
|
// copy the continuation body into the frame
|
||||||
@ -135,8 +137,13 @@ LOCAL(vmInvoke_continuationTest):
|
|||||||
movl $vmInvoke_returnAddress,%esi
|
movl $vmInvoke_returnAddress,%esi
|
||||||
#else
|
#else
|
||||||
call LOCAL(getPC)
|
call LOCAL(getPC)
|
||||||
|
# if defined __APPLE__
|
||||||
|
LOCAL(vmInvoke_offset):
|
||||||
|
leal vmInvoke_returnAddress-LOCAL(vmInvoke_offset)(%esi),%esi
|
||||||
|
# else
|
||||||
addl $_GLOBAL_OFFSET_TABLE_,%esi
|
addl $_GLOBAL_OFFSET_TABLE_,%esi
|
||||||
movl vmInvoke_returnAddress@GOT(%esi),%esi
|
movl vmInvoke_returnAddress@GOT(%esi),%esi
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
movl %esi,(%esp,%edi,1)
|
movl %esi,(%esp,%edi,1)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user