Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / metadata / reflection.c
index fe80ea7027c03b5533976f925c5f114680c065d8..f8e9f37fb49c37774f7aa70a6ce8e5980add9a93 100644 (file)
@@ -143,7 +143,6 @@ mono_class_free_ref_info (MonoClass *klass)
        }
 }
 
-
 /**
  * mono_custom_attrs_free:
  */
@@ -156,7 +155,6 @@ mono_custom_attrs_free (MonoCustomAttrInfo *ainfo)
                g_free (ainfo);
 }
 
-
 gboolean
 reflected_equal (gconstpointer a, gconstpointer b)
 {
@@ -175,7 +173,6 @@ reflected_hash (gconstpointer a) {
        return seed;
 }
 
-
 static void
 clear_cached_object (MonoDomain *domain, gpointer o, MonoClass *klass)
 {
@@ -186,36 +183,31 @@ clear_cached_object (MonoDomain *domain, gpointer o, MonoClass *klass)
 
                pe.item = o;
                pe.refclass = klass;
-               if (mono_g_hash_table_lookup_extended (domain->refobject_hash, &pe, &orig_pe, &orig_value)) {
-                       mono_g_hash_table_remove (domain->refobject_hash, &pe);
-                       FREE_REFENTRY (orig_pe);
+
+               if (mono_conc_g_hash_table_lookup_extended (domain->refobject_hash, &pe, &orig_pe, &orig_value)) {
+                       mono_conc_g_hash_table_remove (domain->refobject_hash, &pe);
+                       free_reflected_entry (orig_pe);
                }
        }
        mono_domain_unlock (domain);
 }
 
-#ifdef REFENTRY_REQUIRES_CLEANUP
 static void
 cleanup_refobject_hash (gpointer key, gpointer value, gpointer user_data)
 {
-       FREE_REFENTRY (key);
+       free_reflected_entry (key);
 }
-#endif
 
 void
 mono_reflection_cleanup_domain (MonoDomain *domain)
 {
        if (domain->refobject_hash) {
-/*let's avoid scanning the whole hashtable if not needed*/
-#ifdef REFENTRY_REQUIRES_CLEANUP
-               mono_g_hash_table_foreach (domain->refobject_hash, cleanup_refobject_hash, NULL);
-#endif
-               mono_g_hash_table_destroy (domain->refobject_hash);
+               mono_conc_g_hash_table_foreach (domain->refobject_hash, cleanup_refobject_hash, NULL);
+               mono_conc_g_hash_table_destroy (domain->refobject_hash);
                domain->refobject_hash = NULL;
        }
 }
 
-
 /**
  * mono_assembly_get_object:
  * \param domain an app domain
@@ -1209,6 +1201,7 @@ mono_method_body_get_object (MonoDomain *domain, MonoMethod *method)
        HANDLE_FUNCTION_RETURN_OBJ (result);
 }
 
+/* WARNING: This method can return NULL on sucess */
 static MonoReflectionMethodBodyHandle
 method_body_object_construct (MonoDomain *domain, MonoClass *unused_class, MonoMethod *method, gpointer user_data, MonoError *error)
 {