diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 108fae5f4e3..dfd5a401f47 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1,9 +1,9 @@ # MS VC++2010 runtime library -@ stub -arch=win32 ??0?$_SpinWait@$00@details@Concurrency@@QAE@P6AXXZ@Z -@ stub -arch=win64 ??0?$_SpinWait@$00@details@Concurrency@@QEAA@P6AXXZ@Z -@ stub -arch=win32 ??0?$_SpinWait@$0A@@details@Concurrency@@QAE@P6AXXZ@Z -@ stub -arch=win64 ??0?$_SpinWait@$0A@@details@Concurrency@@QEAA@P6AXXZ@Z +@ thiscall -arch=win32 ??0?$_SpinWait@$00@details@Concurrency@@QAE@P6AXXZ@Z(ptr ptr) SpinWait_ctor_yield +@ cdecl -arch=win64 ??0?$_SpinWait@$00@details@Concurrency@@QEAA@P6AXXZ@Z(ptr ptr) SpinWait_ctor_yield +@ thiscall -arch=win32 ??0?$_SpinWait@$0A@@details@Concurrency@@QAE@P6AXXZ@Z(ptr ptr) SpinWait_ctor +@ cdecl -arch=win64 ??0?$_SpinWait@$0A@@details@Concurrency@@QEAA@P6AXXZ@Z(ptr ptr) SpinWait_ctor @ stub -arch=win32 ??0SchedulerPolicy@Concurrency@@QAA@IZZ @ stub -arch=win64 ??0SchedulerPolicy@Concurrency@@QEAA@_KZZ @ stub -arch=win32 ??0SchedulerPolicy@Concurrency@@QAE@ABV01@@Z @@ -228,10 +228,10 @@ @ extern ??_7bad_typeid@std@@6B@ MSVCRT_bad_typeid_vtable @ extern ??_7exception@@6B@ MSVCRT_exception_old_vtable @ extern ??_7exception@std@@6B@ MSVCRT_exception_vtable -@ stub -arch=win32 ??_F?$_SpinWait@$00@details@Concurrency@@QAEXXZ -@ stub -arch=win64 ??_F?$_SpinWait@$00@details@Concurrency@@QEAAXXZ -@ stub -arch=win32 ??_F?$_SpinWait@$0A@@details@Concurrency@@QAEXXZ -@ stub -arch=win64 ??_F?$_SpinWait@$0A@@details@Concurrency@@QEAAXXZ +@ thiscall -arch=win32 ??_F?$_SpinWait@$00@details@Concurrency@@QAEXXZ(ptr) SpinWait_dtor +@ cdecl -arch=win64 ??_F?$_SpinWait@$00@details@Concurrency@@QEAAXXZ(ptr) SpinWait_dtor +@ thiscall -arch=win32 ??_F?$_SpinWait@$0A@@details@Concurrency@@QAEXXZ(ptr) SpinWait_dtor +@ cdecl -arch=win64 ??_F?$_SpinWait@$0A@@details@Concurrency@@QEAAXXZ(ptr) SpinWait_dtor @ thiscall -arch=i386 ??_Fbad_cast@std@@QAEXXZ(ptr) MSVCRT_bad_cast_default_ctor @ cdecl -arch=win64 ??_Fbad_cast@std@@QEAAXXZ(ptr) MSVCRT_bad_cast_default_ctor @ thiscall -arch=i386 ??_Fbad_typeid@std@@QAEXXZ(ptr) MSVCRT_bad_typeid_default_ctor @@ -325,10 +325,10 @@ @ stub -arch=win64 ?_ConcRT_Trace@details@Concurrency@@YAXHPEB_WZZ @ stub -arch=win32 ?_Copy_str@exception@std@@AAEXPBD@Z @ stub -arch=win64 ?_Copy_str@exception@std@@AEAAXPEBD@Z -@ stub -arch=win32 ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IAEXXZ -@ stub -arch=win64 ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IEAAXXZ -@ stub -arch=win32 ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IAEXXZ -@ stub -arch=win64 ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IEAAXXZ +@ thiscall -arch=win32 ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IAEXXZ(ptr) SpinWait__DoYield +@ cdecl -arch=win64 ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IEAAXXZ(ptr) SpinWait__DoYield +@ thiscall -arch=win32 ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IAEXXZ(ptr) SpinWait__DoYield +@ cdecl -arch=win64 ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IEAAXXZ(ptr) SpinWait__DoYield @ stub -arch=win32 ?_IsCanceling@_StructuredTaskCollection@details@Concurrency@@QAE_NXZ @ stub -arch=win64 ?_IsCanceling@_StructuredTaskCollection@details@Concurrency@@QEAA_NXZ @ stub -arch=win32 ?_IsCanceling@_TaskCollection@details@Concurrency@@QAE_NXZ @@ -337,10 +337,10 @@ @ stub -arch=win64 ?_Name_base@type_info@@CAPEBDPEBV1@PEAU__type_info_node@@@Z @ stub -arch=win32 ?_Name_base_internal@type_info@@CAPBDPBV1@PAU__type_info_node@@@Z @ stub -arch=win64 ?_Name_base_internal@type_info@@CAPEBDPEBV1@PEAU__type_info_node@@@Z -@ stub -arch=win32 ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IAEKXZ -@ stub -arch=win64 ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IEAAKXZ -@ stub -arch=win32 ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IAEKXZ -@ stub -arch=win64 ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IEAAKXZ +@ thiscall -arch=win32 ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IAEKXZ(ptr) SpinWait__NumberOfSpins +@ cdecl -arch=win64 ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IEAAKXZ(ptr) SpinWait__NumberOfSpins +@ thiscall -arch=win32 ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IAEKXZ(ptr) SpinWait__NumberOfSpins +@ cdecl -arch=win64 ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IEAAKXZ(ptr) SpinWait__NumberOfSpins @ stub -arch=win32 ?_Release@_NonReentrantBlockingLock@details@Concurrency@@QAEXXZ @ stub -arch=win64 ?_Release@_NonReentrantBlockingLock@details@Concurrency@@QEAAXXZ @ stub -arch=win32 ?_Release@_NonReentrantPPLLock@details@Concurrency@@QAEXXZ @@ -355,10 +355,10 @@ @ stub -arch=win64 ?_ReleaseRead@_ReaderWriterLock@details@Concurrency@@QEAAXXZ @ stub -arch=win32 ?_ReleaseWrite@_ReaderWriterLock@details@Concurrency@@QAEXXZ @ stub -arch=win64 ?_ReleaseWrite@_ReaderWriterLock@details@Concurrency@@QEAAXXZ -@ stub -arch=win32 ?_Reset@?$_SpinWait@$00@details@Concurrency@@IAEXXZ -@ stub -arch=win64 ?_Reset@?$_SpinWait@$00@details@Concurrency@@IEAAXXZ -@ stub -arch=win32 ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IAEXXZ -@ stub -arch=win64 ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IEAAXXZ +@ thiscall -arch=win32 ?_Reset@?$_SpinWait@$00@details@Concurrency@@IAEXXZ(ptr) SpinWait__Reset +@ cdecl -arch=win64 ?_Reset@?$_SpinWait@$00@details@Concurrency@@IEAAXXZ(ptr) SpinWait__Reset +@ thiscall -arch=win32 ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IAEXXZ(ptr) SpinWait__Reset +@ cdecl -arch=win64 ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IEAAXXZ(ptr) SpinWait__Reset @ stub -arch=win32 ?_RunAndWait@_StructuredTaskCollection@details@Concurrency@@QAG?AW4_TaskCollectionStatus@23@PAV_UnrealizedChore@23@@Z @ stub -arch=win64 ?_RunAndWait@_StructuredTaskCollection@details@Concurrency@@QEAA?AW4_TaskCollectionStatus@23@PEAV_UnrealizedChore@23@@Z @ stub -arch=win32 ?_RunAndWait@_TaskCollection@details@Concurrency@@QAG?AW4_TaskCollectionStatus@23@PAV_UnrealizedChore@23@@Z @@ -367,18 +367,18 @@ @ stub -arch=win64 ?_Schedule@_StructuredTaskCollection@details@Concurrency@@QEAAXPEAV_UnrealizedChore@23@@Z @ stub -arch=win32 ?_Schedule@_TaskCollection@details@Concurrency@@QAEXPAV_UnrealizedChore@23@@Z @ stub -arch=win64 ?_Schedule@_TaskCollection@details@Concurrency@@QEAAXPEAV_UnrealizedChore@23@@Z -@ stub -arch=win32 ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QAEXI@Z -@ stub -arch=win64 ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QEAAXI@Z -@ stub -arch=win32 ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QAEXI@Z -@ stub -arch=win64 ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QEAAXI@Z -@ stub -arch=win32 ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IAE_NXZ -@ stub -arch=win64 ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IEAA_NXZ -@ stub -arch=win32 ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IAE_NXZ -@ stub -arch=win64 ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IEAA_NXZ -@ stub -arch=win32 ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QAE_NXZ -@ stub -arch=win64 ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QEAA_NXZ -@ stub -arch=win32 ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QAE_NXZ -@ stub -arch=win64 ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QEAA_NXZ +@ thiscall -arch=win32 ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QAEXI@Z(ptr long) SpinWait__SetSpinCount +@ cdecl -arch=win64 ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QEAAXI@Z(ptr long) SpinWait__SetSpinCount +@ thiscall -arch=win32 ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QAEXI@Z(ptr long) SpinWait__SetSpinCount +@ cdecl -arch=win64 ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QEAAXI@Z(ptr long) SpinWait__SetSpinCount +@ thiscall -arch=win32 ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IAE_NXZ(ptr) SpinWait__ShouldSpinAgain +@ cdecl -arch=win64 ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IEAA_NXZ(ptr) SpinWait__ShouldSpinAgain +@ thiscall -arch=win32 ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IAE_NXZ(ptr) SpinWait__ShouldSpinAgain +@ cdecl -arch=win64 ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IEAA_NXZ(ptr) SpinWait__ShouldSpinAgain +@ thiscall -arch=win32 ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QAE_NXZ(ptr) SpinWait__SpinOnce +@ cdecl -arch=win64 ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QEAA_NXZ(ptr) SpinWait__SpinOnce +@ thiscall -arch=win32 ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QAE_NXZ(ptr) SpinWait__SpinOnce +@ cdecl -arch=win64 ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QEAA_NXZ(ptr) SpinWait__SpinOnce @ stub ?_SpinYield@Context@Concurrency@@SAXXZ @ stub -arch=win32 ?_Start@_Timer@details@Concurrency@@IAEXXZ @ stub -arch=win64 ?_Start@_Timer@details@Concurrency@@IEAAXXZ @@ -407,7 +407,7 @@ @ stub -arch=win64 ?_ValidateRead@@YAHPEBXI@Z @ stub -arch=win32 ?_ValidateWrite@@YAHPAXI@Z @ stub -arch=win64 ?_ValidateWrite@@YAHPEAXI@Z -@ stub ?_Value@_SpinCount@details@Concurrency@@SAIXZ +@ cdecl ?_Value@_SpinCount@details@Concurrency@@SAIXZ() SpinCount__Value @ stub -arch=win32 ?__ExceptionPtrAssign@@YAXPAXPBX@Z @ stub -arch=win64 ?__ExceptionPtrAssign@@YAXPEAXPEBX@Z @ stub -arch=win32 ?__ExceptionPtrCompare@@YA_NPBX0@Z diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index d6e5efe41f5..41777bb8506 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1,11 +1,11 @@ # MS VC++2012 runtime library -@ stub -arch=arm ??0?$_SpinWait@$00@details@Concurrency@@QAA@P6AXXZ@Z -@ stub -arch=i386 ??0?$_SpinWait@$00@details@Concurrency@@QAE@P6AXXZ@Z -@ stub -arch=win64 ??0?$_SpinWait@$00@details@Concurrency@@QEAA@P6AXXZ@Z -@ stub -arch=arm ??0?$_SpinWait@$0A@@details@Concurrency@@QAA@P6AXXZ@Z -@ stub -arch=i386 ??0?$_SpinWait@$0A@@details@Concurrency@@QAE@P6AXXZ@Z -@ stub -arch=win64 ??0?$_SpinWait@$0A@@details@Concurrency@@QEAA@P6AXXZ@Z +@ cdecl -arch=arm ??0?$_SpinWait@$00@details@Concurrency@@QAA@P6AXXZ@Z(ptr ptr) SpinWait_ctor_yield +@ thiscall -arch=i386 ??0?$_SpinWait@$00@details@Concurrency@@QAE@P6AXXZ@Z(ptr ptr) SpinWait_ctor_yield +@ cdecl -arch=win64 ??0?$_SpinWait@$00@details@Concurrency@@QEAA@P6AXXZ@Z(ptr ptr) SpinWait_ctor_yield +@ cdecl -arch=arm ??0?$_SpinWait@$0A@@details@Concurrency@@QAA@P6AXXZ@Z(ptr ptr) SpinWait_ctor +@ thiscall -arch=i386 ??0?$_SpinWait@$0A@@details@Concurrency@@QAE@P6AXXZ@Z(ptr ptr) SpinWait_ctor +@ cdecl -arch=win64 ??0?$_SpinWait@$0A@@details@Concurrency@@QEAA@P6AXXZ@Z(ptr ptr) SpinWait_ctor @ stub -arch=win32 ??0SchedulerPolicy@Concurrency@@QAA@IZZ @ stub -arch=win64 ??0SchedulerPolicy@Concurrency@@QEAA@_KZZ @ stub -arch=arm ??0SchedulerPolicy@Concurrency@@QAA@ABV01@@Z @@ -374,12 +374,12 @@ @ extern ??_7bad_cast@std@@6B@ MSVCRT_bad_cast_vtable @ extern ??_7bad_typeid@std@@6B@ MSVCRT_bad_typeid_vtable @ extern ??_7exception@std@@6B@ MSVCRT_exception_vtable -@ stub -arch=arm ??_F?$_SpinWait@$00@details@Concurrency@@QAAXXZ -@ stub -arch=i386 ??_F?$_SpinWait@$00@details@Concurrency@@QAEXXZ -@ stub -arch=win64 ??_F?$_SpinWait@$00@details@Concurrency@@QEAAXXZ -@ stub -arch=arm ??_F?$_SpinWait@$0A@@details@Concurrency@@QAAXXZ -@ stub -arch=i386 ??_F?$_SpinWait@$0A@@details@Concurrency@@QAEXXZ -@ stub -arch=win64 ??_F?$_SpinWait@$0A@@details@Concurrency@@QEAAXXZ +@ cdecl -arch=arm ??_F?$_SpinWait@$00@details@Concurrency@@QAAXXZ(ptr) SpinWait_dtor +@ thiscall -arch=i386 ??_F?$_SpinWait@$00@details@Concurrency@@QAEXXZ(ptr) SpinWait_dtor +@ cdecl -arch=win64 ??_F?$_SpinWait@$00@details@Concurrency@@QEAAXXZ(ptr) SpinWait_dtor +@ cdecl -arch=arm ??_F?$_SpinWait@$0A@@details@Concurrency@@QAAXXZ(ptr) SpinWait_dtor +@ thiscall -arch=i386 ??_F?$_SpinWait@$0A@@details@Concurrency@@QAEXXZ(ptr) SpinWait_dtor +@ cdecl -arch=win64 ??_F?$_SpinWait@$0A@@details@Concurrency@@QEAAXXZ(ptr) SpinWait_dtor @ stub -arch=arm ??_F_Context@details@Concurrency@@QAAXXZ @ stub -arch=i386 ??_F_Context@details@Concurrency@@QAEXXZ @ stub -arch=win64 ??_F_Context@details@Concurrency@@QEAAXXZ @@ -524,12 +524,12 @@ @ stub -arch=arm ?_Destroy@_CancellationTokenState@details@Concurrency@@EAAXXZ @ stub -arch=i386 ?_Destroy@_CancellationTokenState@details@Concurrency@@EAEXXZ @ stub -arch=win64 ?_Destroy@_CancellationTokenState@details@Concurrency@@EEAAXXZ -@ stub -arch=arm ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IAAXXZ -@ stub -arch=i386 ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IAEXXZ -@ stub -arch=win64 ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IEAAXXZ -@ stub -arch=arm ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IAAXXZ -@ stub -arch=i386 ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IAEXXZ -@ stub -arch=win64 ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IEAAXXZ +@ cdecl -arch=arm ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IAAXXZ(ptr) SpinWait__DoYield +@ thiscall -arch=i386 ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IAEXXZ(ptr) SpinWait__DoYield +@ cdecl -arch=win64 ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IEAAXXZ(ptr) SpinWait__DoYield +@ cdecl -arch=arm ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IAAXXZ(ptr) SpinWait__DoYield +@ thiscall -arch=i386 ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IAEXXZ(ptr) SpinWait__DoYield +@ cdecl -arch=win64 ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IEAAXXZ(ptr) SpinWait__DoYield @ stub ?_Get@_CurrentScheduler@details@Concurrency@@SA?AV_Scheduler@23@XZ @ stub -arch=win32 ?_GetConcRTTraceInfo@Concurrency@@YAPBU_CONCRT_TRACE_INFO@details@1@XZ @ stub -arch=win64 ?_GetConcRTTraceInfo@Concurrency@@YAPEBU_CONCRT_TRACE_INFO@details@1@XZ @@ -561,12 +561,12 @@ @ stub -arch=win64 ?_NewCollection@_AsyncTaskCollection@details@Concurrency@@SAPEAV123@PEAV_CancellationTokenState@23@@Z @ stub -arch=win32 ?_NewTokenState@_CancellationTokenState@details@Concurrency@@SAPAV123@XZ @ stub -arch=win64 ?_NewTokenState@_CancellationTokenState@details@Concurrency@@SAPEAV123@XZ -@ stub -arch=arm ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IAAKXZ -@ stub -arch=i386 ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IAEKXZ -@ stub -arch=win64 ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IEAAKXZ -@ stub -arch=arm ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IAAKXZ -@ stub -arch=i386 ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IAEKXZ -@ stub -arch=win64 ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IEAAKXZ +@ cdecl -arch=arm ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IAAKXZ(ptr) SpinWait__NumberOfSpins +@ thiscall -arch=i386 ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IAEKXZ(ptr) SpinWait__NumberOfSpins +@ cdecl -arch=win64 ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IEAAKXZ(ptr) SpinWait__NumberOfSpins +@ cdecl -arch=arm ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IAAKXZ(ptr) SpinWait__NumberOfSpins +@ thiscall -arch=i386 ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IAEKXZ(ptr) SpinWait__NumberOfSpins +@ cdecl -arch=win64 ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IEAAKXZ(ptr) SpinWait__NumberOfSpins @ stub ?_Oversubscribe@_Context@details@Concurrency@@SAX_N@Z @ stub -arch=arm ?_Reference@_Scheduler@details@Concurrency@@QAAIXZ @ stub -arch=i386 ?_Reference@_Scheduler@details@Concurrency@@QAEIXZ @@ -602,12 +602,12 @@ @ stub -arch=i386 ?_ReleaseWrite@_ReaderWriterLock@details@Concurrency@@QAEXXZ @ stub -arch=win64 ?_ReleaseWrite@_ReaderWriterLock@details@Concurrency@@QEAAXXZ @ stub ?_ReportUnobservedException@details@Concurrency@@YAXXZ -@ stub -arch=arm ?_Reset@?$_SpinWait@$00@details@Concurrency@@IAAXXZ -@ stub -arch=i386 ?_Reset@?$_SpinWait@$00@details@Concurrency@@IAEXXZ -@ stub -arch=win64 ?_Reset@?$_SpinWait@$00@details@Concurrency@@IEAAXXZ -@ stub -arch=arm ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IAAXXZ -@ stub -arch=i386 ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IAEXXZ -@ stub -arch=win64 ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IEAAXXZ +@ cdecl -arch=arm ?_Reset@?$_SpinWait@$00@details@Concurrency@@IAAXXZ(ptr) SpinWait__Reset +@ thiscall -arch=i386 ?_Reset@?$_SpinWait@$00@details@Concurrency@@IAEXXZ(ptr) SpinWait__Reset +@ cdecl -arch=win64 ?_Reset@?$_SpinWait@$00@details@Concurrency@@IEAAXXZ(ptr) SpinWait__Reset +@ cdecl -arch=arm ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IAAXXZ(ptr) SpinWait__Reset +@ thiscall -arch=i386 ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IAEXXZ(ptr) SpinWait__Reset +@ cdecl -arch=win64 ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IEAAXXZ(ptr) SpinWait__Reset @ stub -arch=arm ?_RunAndWait@_StructuredTaskCollection@details@Concurrency@@QAA?AW4_TaskCollectionStatus@23@PAV_UnrealizedChore@23@@Z @ stub -arch=i386 ?_RunAndWait@_StructuredTaskCollection@details@Concurrency@@QAG?AW4_TaskCollectionStatus@23@PAV_UnrealizedChore@23@@Z @ stub -arch=win64 ?_RunAndWait@_StructuredTaskCollection@details@Concurrency@@QEAA?AW4_TaskCollectionStatus@23@PEAV_UnrealizedChore@23@@Z @@ -628,25 +628,25 @@ @ stub -arch=win64 ?_Schedule@_TaskCollection@details@Concurrency@@QEAAXPEAV_UnrealizedChore@23@PEAVlocation@3@@Z @ stub -arch=win32 ?_ScheduleTask@_CurrentScheduler@details@Concurrency@@SAXP6AXPAX@Z0@Z @ stub -arch=win64 ?_ScheduleTask@_CurrentScheduler@details@Concurrency@@SAXP6AXPEAX@Z0@Z -@ stub -arch=arm ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QAAXI@Z -@ stub -arch=i386 ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QAEXI@Z -@ stub -arch=win64 ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QEAAXI@Z -@ stub -arch=arm ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QAAXI@Z -@ stub -arch=i386 ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QAEXI@Z -@ stub -arch=win64 ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QEAAXI@Z +@ cdecl -arch=arm ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QAAXI@Z(ptr long) SpinWait__SetSpinCount +@ thiscall -arch=i386 ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QAEXI@Z(ptr long) SpinWait__SetSpinCount +@ cdecl -arch=win64 ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QEAAXI@Z(ptr long) SpinWait__SetSpinCount +@ cdecl -arch=arm ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QAAXI@Z(ptr long) SpinWait__SetSpinCount +@ thiscall -arch=i386 ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QAEXI@Z(ptr long) SpinWait__SetSpinCount +@ cdecl -arch=win64 ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QEAAXI@Z(ptr long) SpinWait__SetSpinCount @ stub ?_SetUnobservedExceptionHandler@details@Concurrency@@YAXP6AXXZ@Z -@ stub -arch=arm ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IAA_NXZ -@ stub -arch=i386 ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IAE_NXZ -@ stub -arch=win64 ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IEAA_NXZ -@ stub -arch=arm ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IAA_NXZ -@ stub -arch=i386 ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IAE_NXZ -@ stub -arch=win64 ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IEAA_NXZ -@ stub -arch=arm ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QAA_NXZ -@ stub -arch=i386 ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QAE_NXZ -@ stub -arch=win64 ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QEAA_NXZ -@ stub -arch=arm ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QAA_NXZ -@ stub -arch=i386 ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QAE_NXZ -@ stub -arch=win64 ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QEAA_NXZ +@ cdecl -arch=arm ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IAA_NXZ(ptr) SpinWait__ShouldSpinAgain +@ thiscall -arch=i386 ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IAE_NXZ(ptr) SpinWait__ShouldSpinAgain +@ cdecl -arch=win64 ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IEAA_NXZ(ptr) SpinWait__ShouldSpinAgain +@ cdecl -arch=arm ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IAA_NXZ(ptr) SpinWait__ShouldSpinAgain +@ thiscall -arch=i386 ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IAE_NXZ(ptr) SpinWait__ShouldSpinAgain +@ cdecl -arch=win64 ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IEAA_NXZ(ptr) SpinWait__ShouldSpinAgain +@ cdecl -arch=arm ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QAA_NXZ(ptr) SpinWait__SpinOnce +@ thiscall -arch=i386 ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QAE_NXZ(ptr) SpinWait__SpinOnce +@ cdecl -arch=win64 ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QEAA_NXZ(ptr) SpinWait__SpinOnce +@ cdecl -arch=arm ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QAA_NXZ(ptr) SpinWait__SpinOnce +@ thiscall -arch=i386 ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QAE_NXZ(ptr) SpinWait__SpinOnce +@ cdecl -arch=win64 ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QEAA_NXZ(ptr) SpinWait__SpinOnce @ stub ?_SpinYield@Context@Concurrency@@SAXXZ @ stub -arch=arm ?_Start@_Timer@details@Concurrency@@IAAXXZ @ stub -arch=i386 ?_Start@_Timer@details@Concurrency@@IAEXXZ @@ -684,7 +684,7 @@ @ stub -arch=win64 ?_ValidateRead@@YAHPEBXI@Z @ stub -arch=win32 ?_ValidateWrite@@YAHPAXI@Z @ stub -arch=win64 ?_ValidateWrite@@YAHPEAXI@Z -@ stub ?_Value@_SpinCount@details@Concurrency@@SAIXZ +@ cdecl ?_Value@_SpinCount@details@Concurrency@@SAIXZ() SpinCount__Value @ stub ?_Yield@_Context@details@Concurrency@@SAXXZ @ stub -arch=win32 ?__ExceptionPtrAssign@@YAXPAXPBX@Z @ stub -arch=win64 ?__ExceptionPtrAssign@@YAXPEAXPEBX@Z diff --git a/dlls/msvcrt/lock.c b/dlls/msvcrt/lock.c index 464c66b8d8a..54bd2be5d78 100644 --- a/dlls/msvcrt/lock.c +++ b/dlls/msvcrt/lock.c @@ -16,12 +16,19 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#include "config.h" +#include "wine/port.h" + #include #include "wine/debug.h" #include "windef.h" #include "winbase.h" +#include "winternl.h" +#include "msvcrt.h" +#include "cppexcept.h" #include "mtdll.h" +#include "cxx.h" WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); @@ -137,3 +144,168 @@ void CDECL _unlock( int locknum ) LeaveCriticalSection( &(lock_table[ locknum ].crit) ); } + +#if _MSVCR_VER >= 100 +typedef enum +{ + SPINWAIT_INIT, + SPINWAIT_SPIN, + SPINWAIT_YIELD, + SPINWAIT_DONE +} SpinWait_state; + +typedef void (__cdecl *yield_func)(void); + +typedef struct +{ + ULONG spin; + ULONG unknown; + SpinWait_state state; + yield_func yield_func; +} SpinWait; + +/* ?_Value@_SpinCount@details@Concurrency@@SAIXZ */ +unsigned int __cdecl SpinCount__Value(void) +{ + static unsigned int val = -1; + + TRACE("()\n"); + + if(val == -1) { + SYSTEM_INFO si; + + GetSystemInfo(&si); + val = si.dwNumberOfProcessors>1 ? 4000 : 0; + } + + return val; +} + +/* ??0?$_SpinWait@$00@details@Concurrency@@QAE@P6AXXZ@Z */ +/* ??0?$_SpinWait@$00@details@Concurrency@@QEAA@P6AXXZ@Z */ +DEFINE_THISCALL_WRAPPER(SpinWait_ctor_yield, 8) +SpinWait* __thiscall SpinWait_ctor_yield(SpinWait *this, yield_func yf) +{ + TRACE("(%p %p)\n", this, yf); + + this->state = SPINWAIT_INIT; + this->unknown = 1; + this->yield_func = yf; + return this; +} + +/* ??0?$_SpinWait@$0A@@details@Concurrency@@QAE@P6AXXZ@Z */ +/* ??0?$_SpinWait@$0A@@details@Concurrency@@QEAA@P6AXXZ@Z */ +DEFINE_THISCALL_WRAPPER(SpinWait_ctor, 8) +SpinWait* __thiscall SpinWait_ctor(SpinWait *this, yield_func yf) +{ + TRACE("(%p %p)\n", this, yf); + + this->state = SPINWAIT_INIT; + this->unknown = 0; + this->yield_func = yf; + return this; +} + +/* ??_F?$_SpinWait@$00@details@Concurrency@@QAEXXZ */ +/* ??_F?$_SpinWait@$00@details@Concurrency@@QEAAXXZ */ +/* ??_F?$_SpinWait@$0A@@details@Concurrency@@QAEXXZ */ +/* ??_F?$_SpinWait@$0A@@details@Concurrency@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(SpinWait_dtor, 4) +void __thiscall SpinWait_dtor(SpinWait *this) +{ + TRACE("(%p)\n", this); +} + +/* ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IAEXXZ */ +/* ?_DoYield@?$_SpinWait@$00@details@Concurrency@@IEAAXXZ */ +/* ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IAEXXZ */ +/* ?_DoYield@?$_SpinWait@$0A@@details@Concurrency@@IEAAXXZ */ +DEFINE_THISCALL_WRAPPER(SpinWait__DoYield, 4) +void __thiscall SpinWait__DoYield(SpinWait *this) +{ + TRACE("(%p)\n", this); + + if(this->unknown) + this->yield_func(); +} + +/* ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IAEKXZ */ +/* ?_NumberOfSpins@?$_SpinWait@$00@details@Concurrency@@IEAAKXZ */ +/* ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IAEKXZ */ +/* ?_NumberOfSpins@?$_SpinWait@$0A@@details@Concurrency@@IEAAKXZ */ +DEFINE_THISCALL_WRAPPER(SpinWait__NumberOfSpins, 4) +ULONG __thiscall SpinWait__NumberOfSpins(SpinWait *this) +{ + TRACE("(%p)\n", this); + return 1; +} + +/* ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QAEXI@Z */ +/* ?_SetSpinCount@?$_SpinWait@$00@details@Concurrency@@QEAAXI@Z */ +/* ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QAEXI@Z */ +/* ?_SetSpinCount@?$_SpinWait@$0A@@details@Concurrency@@QEAAXI@Z */ +DEFINE_THISCALL_WRAPPER(SpinWait__SetSpinCount, 8) +void __thiscall SpinWait__SetSpinCount(SpinWait *this, unsigned int spin) +{ + TRACE("(%p %d)\n", this, spin); + + this->spin = spin; + this->state = spin ? SPINWAIT_SPIN : SPINWAIT_YIELD; +} + +/* ?_Reset@?$_SpinWait@$00@details@Concurrency@@IAEXXZ */ +/* ?_Reset@?$_SpinWait@$00@details@Concurrency@@IEAAXXZ */ +/* ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IAEXXZ */ +/* ?_Reset@?$_SpinWait@$0A@@details@Concurrency@@IEAAXXZ */ +DEFINE_THISCALL_WRAPPER(SpinWait__Reset, 4) +void __thiscall SpinWait__Reset(SpinWait *this) +{ + SpinWait__SetSpinCount(this, SpinCount__Value()); +} + +/* ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IAE_NXZ */ +/* ?_ShouldSpinAgain@?$_SpinWait@$00@details@Concurrency@@IEAA_NXZ */ +/* ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IAE_NXZ */ +/* ?_ShouldSpinAgain@?$_SpinWait@$0A@@details@Concurrency@@IEAA_NXZ */ +DEFINE_THISCALL_WRAPPER(SpinWait__ShouldSpinAgain, 4) +MSVCRT_bool __thiscall SpinWait__ShouldSpinAgain(SpinWait *this) +{ + TRACE("(%p)\n", this); + + this->spin--; + return this->spin > 0; +} + +/* ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QAE_NXZ */ +/* ?_SpinOnce@?$_SpinWait@$00@details@Concurrency@@QEAA_NXZ */ +/* ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QAE_NXZ */ +/* ?_SpinOnce@?$_SpinWait@$0A@@details@Concurrency@@QEAA_NXZ */ +DEFINE_THISCALL_WRAPPER(SpinWait__SpinOnce, 4) +MSVCRT_bool __thiscall SpinWait__SpinOnce(SpinWait *this) +{ + switch(this->state) { + case SPINWAIT_INIT: + SpinWait__Reset(this); + /* fall through */ + case SPINWAIT_SPIN: +#ifdef __i386__ + __asm__ __volatile__( "rep;nop" : : : "memory" ); +#else + __asm__ __volatile__( "" : : : "memory" ); +#endif + + this->spin--; + if(!this->spin) + this->state = this->unknown ? SPINWAIT_YIELD : SPINWAIT_DONE; + return TRUE; + case SPINWAIT_YIELD: + this->state = SPINWAIT_DONE; + this->yield_func(); + return TRUE; + default: + SpinWait__Reset(this); + return FALSE; + } +} +#endif diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h index 2a83b32ef9e..9069b797255 100644 --- a/dlls/msvcrt/msvcrt.h +++ b/dlls/msvcrt/msvcrt.h @@ -59,6 +59,7 @@ #define MSVCRT__MAX_FNAME 256 #define MSVCRT__MAX_EXT 256 +typedef unsigned char MSVCRT_bool; typedef unsigned short MSVCRT_wchar_t; typedef unsigned short MSVCRT_wint_t; typedef unsigned short MSVCRT_wctype_t;