Alexandre Julliard : ntdll: Use the fastcall flag for RtlInterlockedPushListSList.

Alexandre Julliard julliard at winehq.org
Thu Feb 28 16:09:42 CST 2019


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Feb 27 17:13:18 2019 +0100

ntdll: Use the fastcall flag for RtlInterlockedPushListSList.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 .../api-ms-win-core-interlocked-l1-1-0.spec               |  2 +-
 dlls/kernel32/kernel32.spec                               |  2 +-
 dlls/kernelbase/kernelbase.spec                           |  2 +-
 dlls/ntdll/ntdll.spec                                     |  2 +-
 dlls/ntdll/rtl.c                                          | 15 ++++++---------
 5 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/dlls/api-ms-win-core-interlocked-l1-1-0/api-ms-win-core-interlocked-l1-1-0.spec b/dlls/api-ms-win-core-interlocked-l1-1-0/api-ms-win-core-interlocked-l1-1-0.spec
index 8b2d3ac..0058b45 100644
--- a/dlls/api-ms-win-core-interlocked-l1-1-0/api-ms-win-core-interlocked-l1-1-0.spec
+++ b/dlls/api-ms-win-core-interlocked-l1-1-0/api-ms-win-core-interlocked-l1-1-0.spec
@@ -8,5 +8,5 @@
 @ stdcall -arch=i386 InterlockedIncrement(ptr) kernel32.InterlockedIncrement
 @ stdcall InterlockedPopEntrySList(ptr) kernel32.InterlockedPopEntrySList
 @ stdcall InterlockedPushEntrySList(ptr ptr) kernel32.InterlockedPushEntrySList
-@ stdcall -norelay InterlockedPushListSList(ptr ptr ptr long) kernel32.InterlockedPushListSList
+@ stdcall -fastcall InterlockedPushListSList(ptr ptr ptr long) kernel32.InterlockedPushListSList
 @ stdcall QueryDepthSList(ptr) kernel32.QueryDepthSList
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index d925431..c8d52ce 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -961,7 +961,7 @@
 @ stdcall -arch=i386 InterlockedIncrement(ptr)
 @ stdcall InterlockedPopEntrySList(ptr) ntdll.RtlInterlockedPopEntrySList
 @ stdcall InterlockedPushEntrySList(ptr ptr) ntdll.RtlInterlockedPushEntrySList
-@ stdcall -norelay InterlockedPushListSList(ptr ptr ptr long) ntdll.RtlInterlockedPushListSList
+@ stdcall -fastcall InterlockedPushListSList(ptr ptr ptr long) ntdll.RtlInterlockedPushListSList
 @ stdcall InterlockedPushListSListEx(ptr ptr ptr long) ntdll.RtlInterlockedPushListSListEx
 @ stub InvalidateConsoleDIBits
 @ stdcall InvalidateNLSCache()
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 0b19212..9a014b2 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -821,7 +821,7 @@
 @ stdcall -arch=i386 InterlockedIncrement(ptr) kernel32.InterlockedIncrement
 @ stdcall InterlockedPopEntrySList(ptr) kernel32.InterlockedPopEntrySList
 @ stdcall InterlockedPushEntrySList(ptr ptr) kernel32.InterlockedPushEntrySList
-@ stdcall -norelay InterlockedPushListSList(ptr ptr ptr long) kernel32.InterlockedPushListSList
+@ stdcall -fastcall InterlockedPushListSList(ptr ptr ptr long) kernel32.InterlockedPushListSList
 @ stdcall InterlockedPushListSListEx(ptr ptr ptr long) kernel32.InterlockedPushListSListEx
 @ stub InternalLcidToName
 @ stub Internal_EnumCalendarInfo
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 649774f..6062cfb 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -730,7 +730,7 @@
 @ stdcall RtlInterlockedFlushSList(ptr)
 @ stdcall RtlInterlockedPopEntrySList(ptr)
 @ stdcall RtlInterlockedPushEntrySList(ptr ptr)
-@ stdcall -norelay RtlInterlockedPushListSList(ptr ptr ptr long)
+@ stdcall -fastcall RtlInterlockedPushListSList(ptr ptr ptr long)
 @ stdcall RtlInterlockedPushListSListEx(ptr ptr ptr long)
 # @ stub RtlInvertRangeList
 @ stdcall RtlIpv4AddressToStringA(ptr ptr)
diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c
index 393bd27..d13ec31 100644
--- a/dlls/ntdll/rtl.c
+++ b/dlls/ntdll/rtl.c
@@ -51,13 +51,15 @@
 WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
 
 #ifdef __i386__
-#define DEFINE_FASTCALL4_ENTRYPOINT( name ) \
-    __ASM_STDCALL_FUNC( name, 16, \
+#define DEFINE_FASTCALL_WRAPPER(func,args) \
+    __ASM_GLOBAL_FUNC( __fastcall_ ## func, \
                        "popl %eax\n\t" \
                        "pushl %edx\n\t" \
                        "pushl %ecx\n\t" \
                        "pushl %eax\n\t" \
-                       "jmp " __ASM_NAME("__regs_") #name __ASM_STDCALL(16))
+                       "jmp " __ASM_NAME(#func) __ASM_STDCALL(args) )
+#else
+#define DEFINE_FASTCALL_WRAPPER(func,args) /* nothing */
 #endif
 
 /* CRC polynomial 0xedb88320 */
@@ -1256,14 +1258,9 @@ PSLIST_ENTRY WINAPI RtlInterlockedPushListSListEx(PSLIST_HEADER list, PSLIST_ENT
 /*************************************************************************
  * RtlInterlockedPushListSList   [NTDLL.@]
  */
-#ifdef DEFINE_FASTCALL4_ENTRYPOINT
-DEFINE_FASTCALL4_ENTRYPOINT(RtlInterlockedPushListSList)
-PSLIST_ENTRY WINAPI DECLSPEC_HIDDEN __regs_RtlInterlockedPushListSList(PSLIST_HEADER list, PSLIST_ENTRY first,
-                                                                       PSLIST_ENTRY last, ULONG count)
-#else
+DEFINE_FASTCALL_WRAPPER(RtlInterlockedPushListSList, 16)
 PSLIST_ENTRY WINAPI RtlInterlockedPushListSList(PSLIST_HEADER list, PSLIST_ENTRY first,
                                                 PSLIST_ENTRY last, ULONG count)
-#endif
 {
     return RtlInterlockedPushListSListEx(list, first, last, count);
 }




More information about the wine-cvs mailing list