msvcrt: Avoid using inline assembly in continue_after_catch().

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2018-06-04 17:23:32 -05:00 committed by Alexandre Julliard
parent dac8036fb6
commit 701e1b6f81
1 changed files with 8 additions and 6 deletions

View File

@ -172,12 +172,14 @@ __ASM_GLOBAL_FUNC( call_copy_ctor,
"ret" );
/* continue execution to the specified address after exception is caught */
static inline void DECLSPEC_NORETURN continue_after_catch( cxx_exception_frame* frame, void *addr )
{
__asm__ __volatile__("movl -4(%0),%%esp; leal 12(%0),%%ebp; jmp *%1"
: : "r" (frame), "a" (addr) );
for (;;) ; /* unreached */
}
extern void DECLSPEC_NORETURN continue_after_catch( cxx_exception_frame* frame, void *addr );
__ASM_GLOBAL_FUNC( continue_after_catch,
"movl 4(%esp), %edx\n\t"
"movl 8(%esp), %eax\n\t"
"movl -4(%edx), %esp\n\t"
"leal 12(%edx), %ebp\n\t"
"jmp *%eax" );
static inline void call_finally_block( void *code_block, void *base_ptr )
{