Mark legacy ByRef-like types as ref in sources (#15846)
authorJan Kotas <jkotas@microsoft.com>
Sat, 13 Jan 2018 02:30:38 +0000 (18:30 -0800)
committerGitHub <noreply@github.com>
Sat, 13 Jan 2018 02:30:38 +0000 (18:30 -0800)
Delete special casing in the type loader

src/mscorlib/src/System/ArgIterator.cs
src/mscorlib/src/System/RuntimeArgumentHandle.cs
src/mscorlib/src/System/TypedReference.cs
src/vm/methodtablebuilder.cpp

index 51e416c..4d0829d 100644 (file)
@@ -13,7 +13,7 @@ namespace System
     // Note: This type must have the same layout as the CLR's VARARGS type in CLRVarArgs.h.
     // It also contains an inline SigPointer data structure - must keep those fields in sync.
     [StructLayout(LayoutKind.Sequential)]
-    public struct ArgIterator
+    public ref struct ArgIterator
     {
         private IntPtr ArgCookie;               // Cookie from the EE.
 
index 6b56ae8..2066ed7 100644 (file)
@@ -15,7 +15,7 @@ namespace System
     //  This corresponds to EE VARARGS cookie.
 
     // Cannot be serialized
-    public struct RuntimeArgumentHandle
+    public ref struct RuntimeArgumentHandle
     {
         private IntPtr m_ptr;
 
index f7c8779..4733aba 100644 (file)
@@ -16,7 +16,7 @@ namespace System
 
     [CLSCompliant(false)]
     [System.Runtime.Versioning.NonVersionable] // This only applies to field layout
-    public struct TypedReference
+    public ref struct TypedReference
     {
         private IntPtr Value;
         private IntPtr Type;
index 4e8dd96..725fb2d 100644 (file)
@@ -9585,11 +9585,6 @@ void MethodTableBuilder::CheckForSystemTypes()
             }
             LOG((LF_CLASSLOADER, LL_INFO10000, "%s::%s marked as primitive type %i\n", nameSpace, name, type));
 #endif // _DEBUG
-
-            if (type == ELEMENT_TYPE_TYPEDBYREF)
-            {
-                pMT->SetIsByRefLike();
-            }
         }
         else if (strcmp(name, g_NullableName) == 0)
         {
@@ -9606,19 +9601,11 @@ void MethodTableBuilder::CheckForSystemTypes()
             pMT->SetInternalCorElementType(ELEMENT_TYPE_VALUETYPE);
         }
 #endif
-        else if (strcmp(name, g_ArgIteratorName) == 0)
-        {
-            // Mark the special types that have embeded stack pointers in them
-            pMT->SetIsByRefLike();
-        }
+#ifndef _TARGET_X86_ 
         else if (strcmp(name, g_RuntimeArgumentHandleName) == 0)
         {
-            pMT->SetIsByRefLike();
-#ifndef _TARGET_X86_ 
             pMT->SetInternalCorElementType (ELEMENT_TYPE_I);
-#endif
         }
-#ifndef _TARGET_X86_ 
         else if (strcmp(name, g_RuntimeMethodHandleInternalName) == 0)
         {
             pMT->SetInternalCorElementType (ELEMENT_TYPE_I);