Merge branch 'master' of git://factorcode.org/git/factor

db4
Slava Pestov 2010-01-07 01:40:39 -05:00
commit 97a042085d
3 changed files with 18 additions and 6 deletions

View File

@ -126,12 +126,13 @@ IN: bootstrap.x86
! Compute new stack pointer -- 'dst' for memcpy
EAX EDX SUB
! Install new stack pointer
RSP EAX MOV
ESP EAX MOV
! Call memcpy
ESP 8 [+] EDX MOV
ESP 4 [+] EBP MOV
ESP [] EAX MOV
0 CALL "memcpy" f rc-relative jit-dlsym
EDX PUSH
EBP PUSH
EAX PUSH
0 CALL "factor_memcpy" f rc-relative jit-dlsym
ESP 12 ADD
! Return with new callstack
0 RET
] \ set-callstack define-sub-primitive

View File

@ -121,8 +121,12 @@ IN: bootstrap.x86
! Install new stack pointer
RSP arg1 MOV
! Call memcpy; arguments are now in the correct registers
safe-reg 0 MOV "memcpy" f rc-absolute-cell jit-dlsym
! Create register shadow area for Win64
RSP 32 SUB
safe-reg 0 MOV "factor_memcpy" f rc-absolute-cell jit-dlsym
safe-reg CALL
! Tear down register shadow area
RSP 32 ADD
! Return with new callstack
0 RET
] \ set-callstack define-sub-primitive

View File

@ -18,4 +18,11 @@ cell read_cell_hex()
return cell;
}
/* On Windows, memcpy() is in a different DLL and the non-optimizing
compiler can't find it */
VM_C_API void *factor_memcpy(void *dst, void *src, size_t len)
{
return memcpy(dst,src,len);
}
}