Merge branch 'master' of oss.readytalk.com:/var/local/git/avian

This commit is contained in:
Joel Dice 2009-12-03 10:47:51 -07:00
commit 329ee6bbe4
3 changed files with 18 additions and 6 deletions

View File

@ -125,7 +125,7 @@ GLOBAL(vmJumpAndInvoke):
movq %rcx,%rbx
// set return address
movq vmInvoke_returnAddress@GOTPCREL(%rip),%r10
movq GLOBAL(vmInvoke_returnAddress)@GOTPCREL(%rip),%r10
movq %r10,(%r9)
// copy arguments into place
@ -154,7 +154,7 @@ LOCAL(vmJumpAndInvoke_argumentTest):
int3
#endif // not AVIAN_CONTINUATIONS
#else // not __MINGW32__ ||__CYGWIN32__
#else // not __MINGW32__ || __CYGWIN32__
#define CALLEE_SAVED_REGISTER_FOOTPRINT 48
@ -252,7 +252,7 @@ GLOBAL(vmJumpAndInvoke):
movq %rdi,%rbx
// set return address
movq vmInvoke_returnAddress@GOTPCREL(%rip),%r10
movq GLOBAL(vmInvoke_returnAddress)@GOTPCREL(%rip),%r10
movq %r10,(%rcx)
// copy arguments into place
@ -400,8 +400,13 @@ GLOBAL(vmJumpAndInvoke):
movl $vmInvoke_returnAddress,%esi
#else
call LOCAL(getPC)
# if defined __APPLE__
LOCAL(vmJumpAndInvoke_offset):
leal vmInvoke_returnAddress-LOCAL(vmJumpAndInvoke_offset)(%esi),%esi
# else
addl $_GLOBAL_OFFSET_TABLE_,%esi
movl vmInvoke_returnAddress@GOT(%esi),%esi
# endif
#endif
movl %esi,(%ecx)

View File

@ -1886,7 +1886,7 @@ makeCurrentContinuation(MyThread* t, void** targetIp, void** targetBase,
*targetIp = ip;
*targetBase = base;
*targetStack = static_cast<void**>(stack)
+ t->arch->frameReturnAddressSize();;
+ t->arch->frameReturnAddressSize();
}
}

View File

@ -52,7 +52,7 @@ LOCAL(vmInvoke_continuationTest):
// set the return address to vmInvoke_returnAddress
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)
// save the current base pointer in the frame and update it
@ -103,9 +103,11 @@ LOCAL(vmInvoke_exit):
cmpl $0,%ecx
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
shll $2,%esi
leal 8(%esi),%esi
subl %esi,%esp
// copy the continuation body into the frame
@ -135,8 +137,13 @@ LOCAL(vmInvoke_continuationTest):
movl $vmInvoke_returnAddress,%esi
#else
call LOCAL(getPC)
# if defined __APPLE__
LOCAL(vmInvoke_offset):
leal vmInvoke_returnAddress-LOCAL(vmInvoke_offset)(%esi),%esi
# else
addl $_GLOBAL_OFFSET_TABLE_,%esi
movl vmInvoke_returnAddress@GOT(%esi),%esi
# endif
#endif
movl %esi,(%esp,%edi,1)