Tiny asm optimization.

svn path=/trunk/; revision=58060
This commit is contained in:
Timo Kreuzer
2012-12-30 19:02:54 +00:00
parent 79679fb362
commit 7328c943bd
+8 -6
View File
@@ -95,18 +95,20 @@ void * __cdecl __attribute__((error("Can only be used inside an exception filter
/* This is an asm wrapper around _SEH3$_RegisterFrame */
#define _SEH3$_RegisterFrame(_TrylevelFrame, _DataTable, _Target) \
asm goto ("call __SEH3$_RegisterFrame\n" \
asm goto ("leal %0, %%ecx\n" \
"call __SEH3$_RegisterFrame\n" \
: \
: "c" (_TrylevelFrame), "a" (_DataTable) \
: "edx", "memory" \
: "m" (*(_TrylevelFrame)), "a" (_DataTable) \
: "ecx", "edx", "memory" \
: _Target)
/* This is an asm wrapper around _SEH3$_EnterTryLevel */
#define _SEH3$_RegisterTryLevel(_TrylevelFrame, _DataTable, _Target) \
asm goto ("call __SEH3$_RegisterTryLevel\n" \
asm goto ("leal %0, %%ecx\n" \
"call __SEH3$_RegisterTryLevel\n" \
: \
: "c" (_TrylevelFrame), "a" (_DataTable) \
: "edx", "memory" \
: "m" (*(_TrylevelFrame)), "a" (_DataTable) \
: "ecx", "edx", "memory" \
: _Target)
/* On GCC the filter function is a nested function with __fastcall calling