Zebediah Figura : msvcrt: Avoid using inline assembly in __ExceptionPtrDestroy().

Alexandre Julliard julliard at winehq.org
Fri Jun 1 18:19:54 CDT 2018


Module: wine
Branch: master
Commit: 6f819b49c1a8b2280940171f610a75a21b863463
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=6f819b49c1a8b2280940171f610a75a21b863463

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Thu May 31 17:13:49 2018 -0500

msvcrt: Avoid using inline assembly in __ExceptionPtrDestroy().

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcrt/cpp.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/dlls/msvcrt/cpp.c b/dlls/msvcrt/cpp.c
index 07cde75..3402d13 100644
--- a/dlls/msvcrt/cpp.c
+++ b/dlls/msvcrt/cpp.c
@@ -1718,10 +1718,12 @@ void __cdecl __ExceptionPtrCreate(exception_ptr *ep)
 }
 
 #ifdef __i386__
-static inline void call_dtor(const cxx_exception_type *type, void *func, void *object)
-{
-    __asm__ __volatile__("call *%0" : : "m" (func), "c" (object) : "eax", "edx", "memory");
-}
+extern void call_dtor(const cxx_exception_type *type, void *func, void *object);
+
+__ASM_GLOBAL_FUNC( call_dtor,
+                   "movl 12(%esp),%ecx\n\t"
+                   "call *8(%esp)\n\t"
+                   "ret" );
 #elif __x86_64__
 static inline void call_dtor(const cxx_exception_type *type, unsigned int dtor, void *object)
 {




More information about the wine-cvs mailing list