CORINFO_HELP_THROW_TYPE_NOT_SUPPORTED
authorSteve MacLean <sdmaclea.qdt@qualcommdatacenter.com>
Tue, 30 Jan 2018 17:38:31 +0000 (12:38 -0500)
committerSteve MacLean <sdmaclea.qdt@qualcommdatacenter.com>
Tue, 30 Jan 2018 22:26:47 +0000 (17:26 -0500)
src/inc/corinfo.h
src/inc/jithelpers.h
src/jit/flowgraph.cpp
src/jit/hwintrinsicArm64.cpp
src/jit/utils.cpp
src/vm/jithelpers.cpp

index 8292d5ad330b8c160ca4f0461a016d07937352ba..f3b509c5ad764568b7ac3c43714b64b8d6ee0f54 100644 (file)
@@ -213,11 +213,11 @@ TODO: Talk about initializing strutures before use
     #define SELECTANY extern __declspec(selectany)
 #endif
 
-SELECTANY const GUID JITEEVersionIdentifier = { /* e042cffc-cf03-4315-96b9-5fd01dc15923 */
-    0xe042cffc,
-    0xcf03,
-    0x4315,
-    {0x96, 0xb9, 0x5f, 0xd0, 0x1d, 0xc1, 0x59, 0x23}
+SELECTANY const GUID JITEEVersionIdentifier = { /* 0ba106c8-81a0-407f-99a1-928448c1eb62 */
+    0x0ba106c8,
+    0x81a0,
+    0x407f,
+    {0x99, 0xa1, 0x92, 0x84, 0x48, 0xc1, 0xeb, 0x62}
 };
 
 //////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -643,6 +643,7 @@ enum CorInfoHelpFunc
     CORINFO_HELP_THROW_ARGUMENTEXCEPTION,           // throw ArgumentException
     CORINFO_HELP_THROW_ARGUMENTOUTOFRANGEEXCEPTION, // throw ArgumentOutOfRangeException
     CORINFO_HELP_THROW_PLATFORM_NOT_SUPPORTED,      // throw PlatformNotSupportedException
+    CORINFO_HELP_THROW_TYPE_NOT_SUPPORTED,          // throw TypeNotSupportedException
 
     CORINFO_HELP_JIT_PINVOKE_BEGIN, // Transition to preemptive mode before a P/Invoke, frame is the first argument
     CORINFO_HELP_JIT_PINVOKE_END,   // Transition to cooperative mode after a P/Invoke, frame is the first argument
index 1419cda2deed46acdb4700986c138064c78708f5..2238aa87e0beca9bea21f1f9500c6aea9cae329c 100644 (file)
     JITHELPER(CORINFO_HELP_THROW_ARGUMENTEXCEPTION,           JIT_ThrowArgumentException,             CORINFO_HELP_SIG_REG_ONLY)
     JITHELPER(CORINFO_HELP_THROW_ARGUMENTOUTOFRANGEEXCEPTION, JIT_ThrowArgumentOutOfRangeException,   CORINFO_HELP_SIG_REG_ONLY)
     JITHELPER(CORINFO_HELP_THROW_PLATFORM_NOT_SUPPORTED,      JIT_ThrowPlatformNotSupportedException, CORINFO_HELP_SIG_REG_ONLY)
+    JITHELPER(CORINFO_HELP_THROW_TYPE_NOT_SUPPORTED,          JIT_ThrowTypeNotSupportedException,     CORINFO_HELP_SIG_REG_ONLY)
 
     JITHELPER(CORINFO_HELP_JIT_PINVOKE_BEGIN, NULL, CORINFO_HELP_SIG_UNDEF)
     JITHELPER(CORINFO_HELP_JIT_PINVOKE_END, NULL, CORINFO_HELP_SIG_UNDEF)
index beddbadf26cedd20e9b79ed3cf176c2bb337e976..a23d9c6a9df43d1bb2cc2910d5ece3a21aa32bab 100644 (file)
@@ -6853,6 +6853,7 @@ bool Compiler::fgIsThrow(GenTreePtr tree)
         (tree->gtCall.gtCallMethHnd == eeFindHelper(CORINFO_HELP_THROWNULLREF)) ||
         (tree->gtCall.gtCallMethHnd == eeFindHelper(CORINFO_HELP_THROW)) ||
         (tree->gtCall.gtCallMethHnd == eeFindHelper(CORINFO_HELP_RETHROW)) ||
+        (tree->gtCall.gtCallMethHnd == eeFindHelper(CORINFO_HELP_THROW_TYPE_NOT_SUPPORTED)) ||
         (tree->gtCall.gtCallMethHnd == eeFindHelper(CORINFO_HELP_THROW_PLATFORM_NOT_SUPPORTED)))
     {
         noway_assert(tree->gtFlags & GTF_CALL);
index 3a49ff9d18c09a78c6750920d739b5804051e60e..60ee43f84ef85a13ee636e50bc86de205da26c5b 100644 (file)
@@ -202,9 +202,6 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic        intrinsic,
 
             if (simdBaseType == TYP_UNKNOWN)
             {
-                // TODO-FIXME Add CORINFO_HELP_THROW_TYPE_NOT_SUPPORTED
-                unsigned CORINFO_HELP_THROW_TYPE_NOT_SUPPORTED = CORINFO_HELP_THROW_PLATFORM_NOT_SUPPORTED;
-
                 return impUnsupportedHWIntrinsic(CORINFO_HELP_THROW_TYPE_NOT_SUPPORTED, method, sig, mustExpand);
             }
             simdType = getSIMDTypeForSize(simdSizeBytes);
index b8c3f51b77ec1a339c140666cb9a974377f72abd..fda0d67ace68bc36c50ac1c2ef3f81d355ad259f 100644 (file)
@@ -1477,6 +1477,7 @@ void HelperCallProperties::init()
             case CORINFO_HELP_THROW_ARGUMENTEXCEPTION:
             case CORINFO_HELP_THROW_ARGUMENTOUTOFRANGEEXCEPTION:
             case CORINFO_HELP_THROW_PLATFORM_NOT_SUPPORTED:
+            case CORINFO_HELP_THROW_TYPE_NOT_SUPPORTED:
 
                 break;
 
index 48f5df9ff683194c3df15a1529ec4a814d9b4ce0..90c96580e32ac9082738eef80794ac5814b60370 100644 (file)
@@ -4968,6 +4968,24 @@ HCIMPL0(void, JIT_ThrowPlatformNotSupportedException)
 }
 HCIMPLEND
 
+/*********************************************************************/
+HCIMPL0(void, JIT_ThrowTypeNotSupportedException)
+{
+    FCALL_CONTRACT;
+
+    /* Make no assumptions about the current machine state */
+    ResetCurrentContext();
+
+    FC_GC_POLL_NOT_NEEDED();    // throws always open up for GC
+
+    HELPER_METHOD_FRAME_BEGIN_ATTRIB_NOPOLL(Frame::FRAME_ATTR_EXCEPTION);    // Set up a frame
+
+    COMPlusThrow(kNotSupportedException, W("Arg_TypeNotSupported"));
+
+    HELPER_METHOD_FRAME_END();
+}
+HCIMPLEND
+
 /*********************************************************************/
 HCIMPL0(void, JIT_Overflow)
 {