Module: wine Branch: master Commit: 9694fc11fee300134486ee359b525afe098748c8 URL: https://source.winehq.org/git/wine.git/?a=commit;h=9694fc11fee300134486ee359...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Aug 20 18:45:01 2021 +0200
msvcrt: Move improper_scheduler_attach to concurrency.c.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msvcrt/concurrency.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- dlls/msvcrt/cpp.c | 43 ------------------------------------------- dlls/msvcrt/msvcrt.h | 1 - 3 files changed, 43 insertions(+), 46 deletions(-)
diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index e3d7539c64c..5d65e0c35bc 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -302,6 +302,9 @@ typedef struct { typedef exception improper_lock; extern const vtable_ptr improper_lock_vtable;
+typedef exception improper_scheduler_attach; +extern const vtable_ptr improper_scheduler_attach_vtable; + typedef exception invalid_scheduler_policy_key; extern const vtable_ptr invalid_scheduler_policy_key_vtable;
@@ -370,6 +373,33 @@ improper_lock * __thiscall improper_lock_copy_ctor(improper_lock *this, const im return __exception_copy_ctor(this, rhs, &improper_lock_vtable); }
+/* ??0improper_scheduler_attach@Concurrency@@QAE@PBD@Z */ +/* ??0improper_scheduler_attach@Concurrency@@QEAA@PEBD@Z */ +DEFINE_THISCALL_WRAPPER(improper_scheduler_attach_ctor_str, 8) +improper_scheduler_attach* __thiscall improper_scheduler_attach_ctor_str( + improper_scheduler_attach *this, const char *str) +{ + TRACE("(%p %p)\n", this, str); + return __exception_ctor(this, str, &improper_scheduler_attach_vtable); +} + +/* ??0improper_scheduler_attach@Concurrency@@QAE@XZ */ +/* ??0improper_scheduler_attach@Concurrency@@QEAA@XZ */ +DEFINE_THISCALL_WRAPPER(improper_scheduler_attach_ctor, 4) +improper_scheduler_attach* __thiscall improper_scheduler_attach_ctor( + improper_scheduler_attach *this) +{ + return improper_scheduler_attach_ctor_str(this, NULL); +} + +DEFINE_THISCALL_WRAPPER(improper_scheduler_attach_copy_ctor,8) +improper_scheduler_attach * __thiscall improper_scheduler_attach_copy_ctor( + improper_scheduler_attach * _this, const improper_scheduler_attach * rhs) +{ + TRACE("(%p %p)\n", _this, rhs); + return __exception_copy_ctor(_this, rhs, &improper_scheduler_attach_vtable); +} + /* ??0invalid_scheduler_policy_key@Concurrency@@QAE@PBD@Z */ /* ??0invalid_scheduler_policy_key@Concurrency@@QEAA@PEBD@Z */ DEFINE_THISCALL_WRAPPER(invalid_scheduler_policy_key_ctor_str, 8) @@ -498,6 +528,8 @@ HRESULT __thiscall scheduler_resource_allocation_error_get_error_code(
DEFINE_RTTI_DATA1(improper_lock, 0, &cexception_rtti_base_descriptor, ".?AVimproper_lock@Concurrency@@") +DEFINE_RTTI_DATA1(improper_scheduler_attach, 0, &cexception_rtti_base_descriptor, + ".?AVimproper_scheduler_attach@Concurrency@@") DEFINE_RTTI_DATA1(invalid_scheduler_policy_key, 0, &cexception_rtti_base_descriptor, ".?AVinvalid_scheduler_policy_key@Concurrency@@") DEFINE_RTTI_DATA1(invalid_scheduler_policy_thread_specification, 0, &cexception_rtti_base_descriptor, @@ -508,6 +540,7 @@ DEFINE_RTTI_DATA1(scheduler_resource_allocation_error, 0, &cexception_rtti_base_ ".?AVscheduler_resource_allocation_error@Concurrency@@")
DEFINE_CXX_DATA1(improper_lock, &cexception_cxx_type_info, cexception_dtor) +DEFINE_CXX_DATA1(improper_scheduler_attach, &cexception_cxx_type_info, cexception_dtor) DEFINE_CXX_DATA1(invalid_scheduler_policy_key, &cexception_cxx_type_info, cexception_dtor) DEFINE_CXX_DATA1(invalid_scheduler_policy_thread_specification, &cexception_cxx_type_info, cexception_dtor) DEFINE_CXX_DATA1(invalid_scheduler_policy_value, &cexception_cxx_type_info, cexception_dtor) @@ -517,6 +550,9 @@ __ASM_BLOCK_BEGIN(concurrency_exception_vtables) __ASM_VTABLE(improper_lock, VTABLE_ADD_FUNC(cexception_vector_dtor) VTABLE_ADD_FUNC(cexception_what)); + __ASM_VTABLE(improper_scheduler_attach, + VTABLE_ADD_FUNC(cexception_vector_dtor) + VTABLE_ADD_FUNC(cexception_what)); __ASM_VTABLE(invalid_scheduler_policy_key, VTABLE_ADD_FUNC(cexception_vector_dtor) VTABLE_ADD_FUNC(cexception_what)); @@ -1105,8 +1141,11 @@ void __thiscall ThreadScheduler_Attach(ThreadScheduler *this) return; }
- if(context->scheduler.scheduler == &this->scheduler) - throw_exception(EXCEPTION_IMPROPER_SCHEDULER_ATTACH, 0, NULL); + if(context->scheduler.scheduler == &this->scheduler) { + improper_scheduler_attach e; + improper_scheduler_attach_ctor_str(&e, NULL); + _CxxThrowException(&e, &improper_scheduler_attach_exception_type); + }
if(context->scheduler.scheduler) { struct scheduler_list *l = operator_new(sizeof(*l)); @@ -2720,6 +2759,7 @@ void msvcrt_init_concurrency(void *base) #ifdef __x86_64__ init_cexception_rtti(base); init_improper_lock_rtti(base); + init_improper_scheduler_attach_rtti(base); init_invalid_scheduler_policy_key_rtti(base); init_invalid_scheduler_policy_thread_specification_rtti(base); init_invalid_scheduler_policy_value_rtti(base); @@ -2733,6 +2773,7 @@ void msvcrt_init_concurrency(void *base)
init_cexception_cxx_type_info(base); init_improper_lock_cxx(base); + init_improper_scheduler_attach_cxx(base); init_invalid_scheduler_policy_key_cxx(base); init_invalid_scheduler_policy_thread_specification_cxx(base); init_invalid_scheduler_policy_value_cxx(base); diff --git a/dlls/msvcrt/cpp.c b/dlls/msvcrt/cpp.c index 4975ea8b8a5..6bcc4614321 100644 --- a/dlls/msvcrt/cpp.c +++ b/dlls/msvcrt/cpp.c @@ -551,36 +551,6 @@ void __thiscall bad_alloc_dtor(bad_alloc * _this)
#if _MSVCR_VER >= 100
-typedef exception improper_scheduler_attach; -extern const vtable_ptr improper_scheduler_attach_vtable; - -/* ??0improper_scheduler_attach@Concurrency@@QAE@PBD@Z */ -/* ??0improper_scheduler_attach@Concurrency@@QEAA@PEBD@Z */ -DEFINE_THISCALL_WRAPPER(improper_scheduler_attach_ctor_str, 8) -improper_scheduler_attach* __thiscall improper_scheduler_attach_ctor_str( - improper_scheduler_attach *this, const char *str) -{ - TRACE("(%p %p)\n", this, str); - return __exception_ctor(this, str, &improper_scheduler_attach_vtable); -} - -/* ??0improper_scheduler_attach@Concurrency@@QAE@XZ */ -/* ??0improper_scheduler_attach@Concurrency@@QEAA@XZ */ -DEFINE_THISCALL_WRAPPER(improper_scheduler_attach_ctor, 4) -improper_scheduler_attach* __thiscall improper_scheduler_attach_ctor( - improper_scheduler_attach *this) -{ - return improper_scheduler_attach_ctor_str(this, NULL); -} - -DEFINE_THISCALL_WRAPPER(improper_scheduler_attach_copy_ctor,8) -improper_scheduler_attach * __thiscall improper_scheduler_attach_copy_ctor( - improper_scheduler_attach * _this, const improper_scheduler_attach * rhs) -{ - TRACE("(%p %p)\n", _this, rhs); - return __exception_copy_ctor(_this, rhs, &improper_scheduler_attach_vtable); -} - typedef exception improper_scheduler_detach; extern const vtable_ptr improper_scheduler_detach_vtable;
@@ -633,9 +603,6 @@ __ASM_VTABLE(__non_rtti_object, VTABLE_ADD_FUNC(__non_rtti_object_vector_dtor) VTABLE_ADD_FUNC(exception_what)); #if _MSVCR_VER >= 100 -__ASM_VTABLE(improper_scheduler_attach, - VTABLE_ADD_FUNC(exception_vector_dtor) - VTABLE_ADD_FUNC(exception_what)); __ASM_VTABLE(improper_scheduler_detach, VTABLE_ADD_FUNC(exception_vector_dtor) VTABLE_ADD_FUNC(exception_what)); @@ -655,8 +622,6 @@ DEFINE_RTTI_DATA1( bad_cast, 0, &exception_rtti_base_descriptor, ".?AVbad_cast@@ DEFINE_RTTI_DATA2( __non_rtti_object, 0, &bad_typeid_rtti_base_descriptor, &exception_rtti_base_descriptor, ".?AV__non_rtti_object@@" ) #endif #if _MSVCR_VER >= 100 -DEFINE_RTTI_DATA1(improper_scheduler_attach, 0, &exception_rtti_base_descriptor, - ".?AVimproper_scheduler_attach@Concurrency@@" ) DEFINE_RTTI_DATA1(improper_scheduler_detach, 0, &exception_rtti_base_descriptor, ".?AVimproper_scheduler_detach@Concurrency@@" ) #endif @@ -670,7 +635,6 @@ DEFINE_CXX_DATA2( __non_rtti_object, &bad_typeid_cxx_type_info, DEFINE_CXX_DATA1( bad_alloc, &exception_cxx_type_info, bad_alloc_dtor ) #endif #if _MSVCR_VER >= 100 -DEFINE_CXX_DATA1(improper_scheduler_attach, &exception_cxx_type_info, exception_dtor) DEFINE_CXX_DATA1(improper_scheduler_detach, &exception_cxx_type_info, exception_dtor) #endif
@@ -687,7 +651,6 @@ void msvcrt_init_exception(void *base) init_bad_cast_rtti(base); init___non_rtti_object_rtti(base); #if _MSVCR_VER >= 100 - init_improper_scheduler_attach_rtti(base); init_improper_scheduler_detach_rtti(base); #endif
@@ -699,7 +662,6 @@ void msvcrt_init_exception(void *base) init_bad_alloc_cxx(base); #endif #if _MSVCR_VER >= 100 - init_improper_scheduler_attach_cxx(base); init_improper_scheduler_detach_cxx(base); #endif #endif @@ -715,11 +677,6 @@ void throw_exception(exception_type et, HRESULT hr, const char *str) _CxxThrowException(&e, &bad_alloc_exception_type); } #if _MSVCR_VER >= 100 - case EXCEPTION_IMPROPER_SCHEDULER_ATTACH: { - improper_scheduler_attach e; - improper_scheduler_attach_ctor_str(&e, str); - _CxxThrowException(&e, &improper_scheduler_attach_exception_type); - } case EXCEPTION_IMPROPER_SCHEDULER_DETACH: { improper_scheduler_detach e; improper_scheduler_detach_ctor_str(&e, str); diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h index 3d5c330eff6..c1537220422 100644 --- a/dlls/msvcrt/msvcrt.h +++ b/dlls/msvcrt/msvcrt.h @@ -190,7 +190,6 @@ void msvcrt_set_errno(int) DECLSPEC_HIDDEN; typedef enum { EXCEPTION_BAD_ALLOC, #if _MSVCR_VER >= 100 - EXCEPTION_IMPROPER_SCHEDULER_ATTACH, EXCEPTION_IMPROPER_SCHEDULER_DETACH, #endif } exception_type;