x86: Rewrite closures

Move everything into sysv.S, removing win32.S and freebsd.S.
Handle all abis with a single ffi_closure_inner function.
Move complexity of the raw THISCALL trampoline into assembly
instead of the trampoline itself.
Only push the context for the REGISTER abi; let the rest
receive it in a register.
This commit is contained in:
Richard Henderson
2014-11-12 09:15:54 +01:00
parent b9ac94f3af
commit b21ec1ce78
6 changed files with 600 additions and 2243 deletions
+1 -5
View File
@@ -129,11 +129,7 @@ typedef enum ffi_abi {
# define FFI_NATIVE_RAW_API 0
# define FFI_GO_CLOSURES 1
#else
# ifdef X86_WIN32
# define FFI_TRAMPOLINE_SIZE 52
# else
# define FFI_TRAMPOLINE_SIZE 10
# endif
# define FFI_TRAMPOLINE_SIZE 12
# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
#endif