Piotr Caban : msvcrt: Move improper_scheduler_attach to concurrency.c.

Alexandre Julliard julliard at winehq.org
Fri Aug 20 16:12:56 CDT 2021


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

Author: Piotr Caban <piotr at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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 at Concurrency@@QAE at PBD@Z */
+/* ??0improper_scheduler_attach at Concurrency@@QEAA at 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 at Concurrency@@QAE at XZ */
+/* ??0improper_scheduler_attach at Concurrency@@QEAA at 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 at Concurrency@@QAE at PBD@Z */
 /* ??0invalid_scheduler_policy_key at Concurrency@@QEAA at 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 at Concurrency@@")
+DEFINE_RTTI_DATA1(improper_scheduler_attach, 0, &cexception_rtti_base_descriptor,
+        ".?AVimproper_scheduler_attach at Concurrency@@")
 DEFINE_RTTI_DATA1(invalid_scheduler_policy_key, 0, &cexception_rtti_base_descriptor,
         ".?AVinvalid_scheduler_policy_key at 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 at 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 at Concurrency@@QAE at PBD@Z */
-/* ??0improper_scheduler_attach at Concurrency@@QEAA at 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 at Concurrency@@QAE at XZ */
-/* ??0improper_scheduler_attach at Concurrency@@QEAA at 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 at Concurrency@@" )
 DEFINE_RTTI_DATA1(improper_scheduler_detach, 0, &exception_rtti_base_descriptor,
         ".?AVimproper_scheduler_detach at 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;




More information about the wine-cvs mailing list