Merge pull request #1635 from alexrp/core-clr-properties
[mono.git] / mono / metadata / icall.c
index 52b0e1abb547183dae49efe5526d66b1bf65a5e1..a7a725a8d32c35459d1a1124050853c295e09720 100644 (file)
@@ -38,6 +38,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/threads-types.h>
 #include <mono/metadata/threadpool.h>
+#include <mono/metadata/threadpool-microsoft.h>
 #include <mono/metadata/monitor.h>
 #include <mono/metadata/reflection.h>
 #include <mono/metadata/assembly.h>
@@ -1470,37 +1471,6 @@ handle_enum:
        return 0;
 }
 
-ICALL_EXPORT guint32
-ves_icall_type_is_subtype_of (MonoReflectionType *type, MonoReflectionType *c, MonoBoolean check_interfaces)
-{
-       MonoClass *klass;
-       MonoClass *klassc;
-
-       g_assert (type != NULL);
-       
-       if (!c) /* FIXME: dont know what do do here */
-               return 0;
-
-       klass = mono_class_from_mono_type (type->type);
-       klassc = mono_class_from_mono_type (c->type);
-
-       /* Interface check requires a more complex setup so we
-        * only do for them. Otherwise we simply avoid mono_class_init.
-        */
-       if (check_interfaces) {
-               mono_class_init_or_throw (klass);
-               mono_class_init_or_throw (klassc);
-       } else if (!klass->supertypes || !klassc->supertypes) {
-               mono_class_setup_supertypes (klass);
-               mono_class_setup_supertypes (klassc);
-       }
-
-       if (type->type->byref)
-               return klassc == mono_defaults.object_class;
-
-       return mono_class_is_subclass_of (klass, klassc, check_interfaces);
-}
-
 static gboolean
 mono_type_is_primitive (MonoType *type)
 {
@@ -4689,6 +4659,20 @@ vell_icall_MonoType_get_core_clr_security_level (MonoReflectionType *this)
        return mono_security_core_clr_class_level (klass);
 }
 
+ICALL_EXPORT int
+ves_icall_MonoField_get_core_clr_security_level (MonoReflectionField *this)
+{
+       MonoClassField *field = this->field;
+       return mono_security_core_clr_field_level (field, TRUE);
+}
+
+ICALL_EXPORT int
+ves_icall_MonoMethod_get_core_clr_security_level (MonoReflectionMethod *this)
+{
+       MonoMethod *method = this->method;
+       return mono_security_core_clr_method_level (method, TRUE);
+}
+
 static void
 fill_reflection_assembly_name (MonoDomain *domain, MonoReflectionAssemblyName *aname, MonoAssemblyName *name, const char *absolute, gboolean by_default_version, gboolean default_publickey, gboolean default_token)
 {