Daniel Lehman : msvcp120: Implement concurrent_vector:: _Internal_throw_exception.
Module: wine Branch: master Commit: 237788a56e54c1b9e58d7aa269d2b201e061380b URL: http://source.winehq.org/git/wine.git/?a=commit;h=237788a56e54c1b9e58d7aa269... Author: Daniel Lehman <dlehman(a)esri.com> Date: Fri Oct 20 13:02:23 2017 +0200 msvcp120: Implement concurrent_vector::_Internal_throw_exception. Signed-off-by: Daniel Lehman <dlehman(a)esri.com> Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)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(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEAAXAEAV123@@Z @ stub -arch=i386 ?_Internal_throw_exception(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IBEXXZ @ stub -arch=win64 ?_Internal_throw_exception(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IEBAXXZ -@ stub -arch=i386 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z -@ stub -arch=win64 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z +@ thiscall -arch=i386 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z(ptr long) msvcp120.?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z +@ cdecl -arch=win64 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z(ptr long) msvcp120.?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z @ stub -arch=i386 ?_IsCanceling(a)_StructuredTaskCollection@details(a)Concurrency@@QAE_NXZ @ stub -arch=win64 ?_IsCanceling(a)_StructuredTaskCollection@details(a)Concurrency@@QEAA_NXZ @ stub -arch=i386 ?_IsCanceling(a)_TaskCollection@details(a)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(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEAAXAEAV123@@Z @ stub -arch=win32 ?_Internal_throw_exception(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IBEXXZ @ stub -arch=win64 ?_Internal_throw_exception(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IEBAXXZ -@ stub -arch=win32 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z -@ stub -arch=win64 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z +@ thiscall -arch=win32 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z(ptr long) _vector_base_v4__Internal_throw_exception +@ cdecl -arch=win64 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z(ptr long) _vector_base_v4__Internal_throw_exception @ cdecl -arch=win32 ?_Ios_base_dtor(a)ios_base@std@@CAXPAV12@@Z(ptr) ios_base_Ios_base_dtor @ cdecl -arch=win64 ?_Ios_base_dtor(a)ios_base@std@@CAXPEAV12@@Z(ptr) ios_base_Ios_base_dtor @ thiscall -arch=win32 ?_Ipfx@?$basic_istream(a)DU?$char_traits(a)D@std@@@std@@QAE_N_N(a)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(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IBAXXZ @ stub -arch=i386 ?_Internal_throw_exception(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IBEXXZ @ stub -arch=win64 ?_Internal_throw_exception(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IEBAXXZ -@ stub -arch=arm ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBAXI(a)Z -@ stub -arch=i386 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z -@ stub -arch=win64 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z +@ cdecl -arch=arm ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBAXI(a)Z(ptr long) _vector_base_v4__Internal_throw_exception +@ thiscall -arch=i386 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z(ptr long) _vector_base_v4__Internal_throw_exception +@ cdecl -arch=win64 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z(ptr long) _vector_base_v4__Internal_throw_exception @ cdecl -arch=win32 ?_Ios_base_dtor(a)ios_base@std@@CAXPAV12@@Z(ptr) ios_base_Ios_base_dtor @ cdecl -arch=win64 ?_Ios_base_dtor(a)ios_base@std@@CAXPEAV12@@Z(ptr) ios_base_Ios_base_dtor @ cdecl -arch=arm ?_Ipfx@?$basic_istream(a)DU?$char_traits(a)D@std@@@std@@QAA_N_N(a)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(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IBAXXZ @ stub -arch=i386 ?_Internal_throw_exception(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IBEXXZ @ stub -arch=win64 ?_Internal_throw_exception(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IEBAXXZ -@ stub -arch=arm ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBAXI(a)Z -@ stub -arch=i386 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z -@ stub -arch=win64 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z +@ cdecl -arch=arm ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBAXI(a)Z(ptr long) _vector_base_v4__Internal_throw_exception +@ thiscall -arch=i386 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z(ptr long) _vector_base_v4__Internal_throw_exception +@ cdecl -arch=win64 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z(ptr long) _vector_base_v4__Internal_throw_exception @ cdecl -arch=win32 ?_Ios_base_dtor(a)ios_base@std@@CAXPAV12@@Z(ptr) ios_base_Ios_base_dtor @ cdecl -arch=win64 ?_Ios_base_dtor(a)ios_base@std@@CAXPEAV12@@Z(ptr) ios_base_Ios_base_dtor @ cdecl -arch=arm ?_Ipfx@?$basic_istream(a)DU?$char_traits(a)D@std@@@std@@QAA_N_N(a)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(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IBAXXZ @ stub -arch=i386 ?_Internal_throw_exception(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IBEXXZ @ stub -arch=win64 ?_Internal_throw_exception(a)_Concurrent_queue_base_v4@details(a)Concurrency@@IEBAXXZ -@ stub -arch=arm ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBAXI(a)Z -@ stub -arch=i386 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z -@ stub -arch=win64 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z +@ cdecl -arch=arm ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBAXI(a)Z(ptr long) msvcp120.?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBAXI(a)Z +@ thiscall -arch=i386 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z(ptr long) msvcp120.?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z +@ cdecl -arch=win64 ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z(ptr long) msvcp120.?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)Z @ cdecl -arch=win32 ?_Ios_base_dtor(a)ios_base@std@@CAXPAV12@@Z(ptr) msvcp120.?_Ios_base_dtor(a)ios_base@std@@CAXPAV12@@Z @ cdecl -arch=win64 ?_Ios_base_dtor(a)ios_base@std@@CAXPEAV12@@Z(ptr) msvcp120.?_Ios_base_dtor(a)ios_base@std@@CAXPEAV12@@Z @ cdecl -arch=arm ?_Ipfx@?$basic_istream(a)DU?$char_traits(a)D@std@@@std@@QAA_N_N(a)Z(ptr long) msvcp120.?_Ipfx@?$basic_istream(a)DU?$char_traits(a)D@std@@@std@@QAA_N_N(a)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(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IBEXI(a)Z */ +/* ?_Internal_throw_exception(a)_Concurrent_vector_base_v4@details(a)Concurrency@@IEBAX_K(a)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
participants (1)
-
Alexandre Julliard