Author: tkreuzer Date: Sun Dec 30 19:02:54 2012 New Revision: 58060
URL: http://svn.reactos.org/svn/reactos?rev=58060&view=rev Log: [PSEH3] Tiny asm optimization.
Modified: trunk/reactos/include/reactos/libs/pseh/pseh3.h
Modified: trunk/reactos/include/reactos/libs/pseh/pseh3.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/libs/pseh/p... ============================================================================== --- trunk/reactos/include/reactos/libs/pseh/pseh3.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/libs/pseh/pseh3.h [iso-8859-1] Sun Dec 30 19:02:54 2012 @@ -95,18 +95,20 @@
/* 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