Merge pull request #13715 from CarolEidt/LsraInfoInLsra
[platform/upstream/coreclr.git] / src / vm / runtimehandles.cpp
index da47cc9..952be62 100644 (file)
 #include "stackprobe.h"
 #include "eeconfig.h"
 #include "eehash.h"
-#include "objecthandle.h"
 #include "interoputil.h"
 #include "typedesc.h"
 #include "virtualcallstub.h"
 #include "contractimpl.h"
 #include "dynamicmethod.h"
 #include "peimagelayout.inl"
-#include "security.h"
 #include "eventtrace.h"
 #include "invokeutil.h"
 
@@ -136,9 +134,7 @@ static BOOL CheckCAVisibilityFromDecoratedType(MethodTable* pCAMT, MethodDesc* p
         dwAttr,
         pCACtor,
         NULL,
-        *AccessCheckOptions::s_pNormalAccessChecks,
-        FALSE,
-        FALSE);
+        *AccessCheckOptions::s_pNormalAccessChecks);
 }
 
 BOOL QCALLTYPE RuntimeMethodHandle::IsCAVisibleFromDecoratedType(
@@ -971,6 +967,24 @@ FCIMPL1(FC_BOOL_RET, RuntimeTypeHandle::IsInterface, ReflectClassBaseObject *pTy
 }
 FCIMPLEND;
 
+
+FCIMPL1(FC_BOOL_RET, RuntimeTypeHandle::IsByRefLike, ReflectClassBaseObject *pTypeUNSAFE)
+{
+    CONTRACTL {
+        FCALL_CHECK;
+    }
+    CONTRACTL_END;
+    
+    REFLECTCLASSBASEREF refType = (REFLECTCLASSBASEREF)ObjectToOBJECTREF(pTypeUNSAFE);
+
+    _ASSERTE(refType != NULL);
+
+    TypeHandle typeHandle = refType->GetType();
+
+    FC_RETURN_BOOL(typeHandle.IsByRefLike());
+}
+FCIMPLEND
+
 BOOL 
 QCALLTYPE 
 RuntimeTypeHandle::IsVisible(
@@ -997,37 +1011,6 @@ RuntimeTypeHandle::IsVisible(
     return fIsExternallyVisible;
 } // RuntimeTypeHandle::IsVisible
 
-FCIMPL1(FC_BOOL_RET, RuntimeTypeHandle::HasProxyAttribute, ReflectClassBaseObject *pTypeUNSAFE) {
-    CONTRACTL {
-        FCALL_CHECK;
-    }
-    CONTRACTL_END;
-
-    REFLECTCLASSBASEREF refType = (REFLECTCLASSBASEREF)ObjectToOBJECTREF(pTypeUNSAFE);
-
-    if (refType == NULL)
-        FCThrowRes(kArgumentNullException, W("Arg_InvalidHandle"));
-
-    TypeHandle typeHandle = refType->GetType();
-    
-    // TODO: Justify this
-    if (typeHandle.IsGenericVariable())
-        FC_RETURN_BOOL(FALSE);
-        
-    if (typeHandle.IsTypeDesc()) {
-        if (!typeHandle.IsArray()) 
-            FC_RETURN_BOOL(FALSE);
-    }  
-    
-    MethodTable* pMT= typeHandle.GetMethodTable();
-    
-    if (!pMT) 
-        FCThrowRes(kArgumentException, W("Arg_InvalidHandle"));
-
-    FC_RETURN_BOOL(pMT->GetClass()->HasRemotingProxyAttribute());
-}
-FCIMPLEND
-
 FCIMPL2(FC_BOOL_RET, RuntimeTypeHandle::IsComObject, ReflectClassBaseObject *pTypeUNSAFE, CLR_BOOL isGenericCOM) {
 #ifdef FEATURE_COMINTEROP
     CONTRACTL {
@@ -2217,6 +2200,14 @@ FCIMPL1(FC_BOOL_RET, RuntimeMethodHandle::IsGenericMethodDefinition, MethodDesc
 }
 FCIMPLEND
 
+FCIMPL1(INT32, RuntimeMethodHandle::GetGenericParameterCount, MethodDesc * pMethod)
+{
+    FCALL_CONTRACT;
+
+    return pMethod->GetNumGenericMethodArgs();
+}
+FCIMPLEND
+
 FCIMPL1(FC_BOOL_RET, RuntimeMethodHandle::IsDynamicMethod, MethodDesc * pMethod)
 {
     FCALL_CONTRACT;
@@ -3116,3 +3107,4 @@ void QCALLTYPE RuntimeMethodHandle::GetCallerType(QCall::StackCrawlMarkHandle pS
 
     return;
 }
+