Daniel Lehman : msvcp120: Implement concurrent_vector:: _Internal_throw_exception.

Alexandre Julliard julliard at winehq.org
Fri Oct 20 15:09:36 CDT 2017


Module: wine
Branch: master
Commit: 237788a56e54c1b9e58d7aa269d2b201e061380b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=237788a56e54c1b9e58d7aa269d2b201e061380b

Author: Daniel Lehman <dlehman at esri.com>
Date:   Fri Oct 20 13:02:23 2017 +0200

msvcp120: Implement concurrent_vector::_Internal_throw_exception.

Signed-off-by: Daniel Lehman <dlehman at esri.com>
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/concrt140/concrt140.spec       |  4 ++--
 dlls/msvcp100/msvcp100.spec         |  4 ++--
 dlls/msvcp110/msvcp110.spec         |  6 +++---
 dlls/msvcp120/msvcp120.spec         |  6 +++---
 dlls/msvcp120_app/msvcp120_app.spec |  6 +++---
 dlls/msvcp90/misc.c                 | 20 ++++++++++++++++++++
 6 files changed, 33 insertions(+), 13 deletions(-)

diff --git a/dlls/concrt140/concrt140.spec b/dlls/concrt140/concrt140.spec
index eb0c9fb..0f96d7e 100644
--- a/dlls/concrt140/concrt140.spec
+++ b/dlls/concrt140/concrt140.spec
@@ -385,8 +385,8 @@
 @ stub -arch=win64 ?_Internal_swap at _Concurrent_vector_base_v4@details at Concurrency@@IEAAXAEAV123@@Z
 @ stub -arch=i386 ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IBEXXZ
 @ stub -arch=win64 ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IEBAXXZ
-@ stub -arch=i386 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z
-@ stub -arch=win64 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z
+@ thiscall -arch=i386 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z(ptr long) msvcp120.?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z
+@ cdecl -arch=win64 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z(ptr long) msvcp120.?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z
 @ stub -arch=i386 ?_IsCanceling at _StructuredTaskCollection@details at Concurrency@@QAE_NXZ
 @ stub -arch=win64 ?_IsCanceling at _StructuredTaskCollection@details at Concurrency@@QEAA_NXZ
 @ stub -arch=i386 ?_IsCanceling at _TaskCollection@details at Concurrency@@QAE_NXZ
diff --git a/dlls/msvcp100/msvcp100.spec b/dlls/msvcp100/msvcp100.spec
index 8bffda2..d557a4a 100644
--- a/dlls/msvcp100/msvcp100.spec
+++ b/dlls/msvcp100/msvcp100.spec
@@ -1061,8 +1061,8 @@
 @ stub -arch=win64 ?_Internal_swap at _Concurrent_vector_base_v4@details at Concurrency@@IEAAXAEAV123@@Z
 @ stub -arch=win32 ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IBEXXZ
 @ stub -arch=win64 ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IEBAXXZ
-@ stub -arch=win32 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z
-@ stub -arch=win64 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z
+@ thiscall -arch=win32 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z(ptr long) _vector_base_v4__Internal_throw_exception
+@ cdecl -arch=win64 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z(ptr long) _vector_base_v4__Internal_throw_exception
 @ cdecl -arch=win32 ?_Ios_base_dtor at ios_base@std@@CAXPAV12@@Z(ptr) ios_base_Ios_base_dtor
 @ cdecl -arch=win64 ?_Ios_base_dtor at ios_base@std@@CAXPEAV12@@Z(ptr) ios_base_Ios_base_dtor
 @ thiscall -arch=win32 ?_Ipfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAE_N_N at Z(ptr long) basic_istream_char__Ipfx
diff --git a/dlls/msvcp110/msvcp110.spec b/dlls/msvcp110/msvcp110.spec
index c912202..aa8adaf 100644
--- a/dlls/msvcp110/msvcp110.spec
+++ b/dlls/msvcp110/msvcp110.spec
@@ -1539,9 +1539,9 @@
 @ stub -arch=arm ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IBAXXZ
 @ stub -arch=i386 ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IBEXXZ
 @ stub -arch=win64 ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IEBAXXZ
-@ stub -arch=arm ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBAXI at Z
-@ stub -arch=i386 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z
-@ stub -arch=win64 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z
+@ cdecl -arch=arm ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBAXI at Z(ptr long) _vector_base_v4__Internal_throw_exception
+@ thiscall -arch=i386 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z(ptr long) _vector_base_v4__Internal_throw_exception
+@ cdecl -arch=win64 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z(ptr long) _vector_base_v4__Internal_throw_exception
 @ cdecl -arch=win32 ?_Ios_base_dtor at ios_base@std@@CAXPAV12@@Z(ptr) ios_base_Ios_base_dtor
 @ cdecl -arch=win64 ?_Ios_base_dtor at ios_base@std@@CAXPEAV12@@Z(ptr) ios_base_Ios_base_dtor
 @ cdecl -arch=arm ?_Ipfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAA_N_N at Z(ptr long) basic_istream_char__Ipfx
diff --git a/dlls/msvcp120/msvcp120.spec b/dlls/msvcp120/msvcp120.spec
index 61d7c7d..e26e3cb 100644
--- a/dlls/msvcp120/msvcp120.spec
+++ b/dlls/msvcp120/msvcp120.spec
@@ -1500,9 +1500,9 @@
 @ stub -arch=arm ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IBAXXZ
 @ stub -arch=i386 ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IBEXXZ
 @ stub -arch=win64 ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IEBAXXZ
-@ stub -arch=arm ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBAXI at Z
-@ stub -arch=i386 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z
-@ stub -arch=win64 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z
+@ cdecl -arch=arm ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBAXI at Z(ptr long) _vector_base_v4__Internal_throw_exception
+@ thiscall -arch=i386 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z(ptr long) _vector_base_v4__Internal_throw_exception
+@ cdecl -arch=win64 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z(ptr long) _vector_base_v4__Internal_throw_exception
 @ cdecl -arch=win32 ?_Ios_base_dtor at ios_base@std@@CAXPAV12@@Z(ptr) ios_base_Ios_base_dtor
 @ cdecl -arch=win64 ?_Ios_base_dtor at ios_base@std@@CAXPEAV12@@Z(ptr) ios_base_Ios_base_dtor
 @ cdecl -arch=arm ?_Ipfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAA_N_N at Z(ptr long) basic_istream_char__Ipfx
diff --git a/dlls/msvcp120_app/msvcp120_app.spec b/dlls/msvcp120_app/msvcp120_app.spec
index e63b3f7..03df113 100644
--- a/dlls/msvcp120_app/msvcp120_app.spec
+++ b/dlls/msvcp120_app/msvcp120_app.spec
@@ -1500,9 +1500,9 @@
 @ stub -arch=arm ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IBAXXZ
 @ stub -arch=i386 ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IBEXXZ
 @ stub -arch=win64 ?_Internal_throw_exception at _Concurrent_queue_base_v4@details at Concurrency@@IEBAXXZ
-@ stub -arch=arm ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBAXI at Z
-@ stub -arch=i386 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z
-@ stub -arch=win64 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z
+@ cdecl -arch=arm ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBAXI at Z(ptr long) msvcp120.?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBAXI at Z
+@ thiscall -arch=i386 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z(ptr long) msvcp120.?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z
+@ cdecl -arch=win64 ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z(ptr long) msvcp120.?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z
 @ cdecl -arch=win32 ?_Ios_base_dtor at ios_base@std@@CAXPAV12@@Z(ptr) msvcp120.?_Ios_base_dtor at ios_base@std@@CAXPAV12@@Z
 @ cdecl -arch=win64 ?_Ios_base_dtor at ios_base@std@@CAXPEAV12@@Z(ptr) msvcp120.?_Ios_base_dtor at ios_base@std@@CAXPEAV12@@Z
 @ cdecl -arch=arm ?_Ipfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAA_N_N at Z(ptr long) msvcp120.?_Ipfx@?$basic_istream at DU?$char_traits at D@std@@@std@@QAA_N_N at Z
diff --git a/dlls/msvcp90/misc.c b/dlls/msvcp90/misc.c
index 9f26a48..901930b 100644
--- a/dlls/msvcp90/misc.c
+++ b/dlls/msvcp90/misc.c
@@ -1702,4 +1702,24 @@ MSVCP_size_t __cdecl _vector_base_v4__Segment_index_of(MSVCP_size_t x)
 
     return log2i(x);
 }
+
+/* ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IBEXI at Z */
+/* ?_Internal_throw_exception at _Concurrent_vector_base_v4@details at Concurrency@@IEBAX_K at Z */
+DEFINE_THISCALL_WRAPPER(_vector_base_v4__Internal_throw_exception, 8)
+void __thiscall _vector_base_v4__Internal_throw_exception(void/*_vector_base_v4*/ *this, MSVCP_size_t idx)
+{
+    static const struct {
+        exception_type type;
+        const char *msg;
+    } exceptions[] = {
+        { EXCEPTION_OUT_OF_RANGE, "Index out of range" },
+        { EXCEPTION_OUT_OF_RANGE, "Index out of segments table range" },
+        { EXCEPTION_RANGE_ERROR,  "Index is inside segment which failed to be allocated" },
+    };
+
+    TRACE("(%p %lu)\n", this, idx);
+
+    if(idx < sizeof(exceptions)/sizeof(exceptions[0]))
+        throw_exception(exceptions[idx].type, exceptions[idx].msg);
+}
 #endif




More information about the wine-cvs mailing list