Add support for value types to mono_object_to_string
[mono.git] / mono / metadata / sgen-gc.c
index d59f06dbd5f9cbb192e1646405c135cfbcf85fac..affe3b06729e1ffef9ebd0dc3813694b64d4708a 100644 (file)
@@ -1048,6 +1048,10 @@ mono_gc_clear_domain (MonoDomain * domain)
 
        LOCK_GC;
 
+       binary_protocol_domain_unload_begin (domain);
+
+       sgen_stop_world (0);
+
        if (concurrent_collection_in_progress)
                sgen_perform_collection (0, GENERATION_OLD, "clear domain", TRUE);
        g_assert (!concurrent_collection_in_progress);
@@ -1112,6 +1116,10 @@ mono_gc_clear_domain (MonoDomain * domain)
                sgen_object_layout_dump (stdout);
        }
 
+       sgen_restart_world (0, NULL);
+
+       binary_protocol_domain_unload_end (domain);
+
        UNLOCK_GC;
 }
 
@@ -3382,6 +3390,9 @@ sgen_ensure_free_space (size_t size)
        sgen_perform_collection (size, generation_to_collect, reason, FALSE);
 }
 
+/*
+ * LOCKING: Assumes the GC lock is held.
+ */
 void
 sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish)
 {
@@ -4865,6 +4876,7 @@ mono_gc_base_init (void)
        init_stats ();
        sgen_init_internal_allocator ();
        sgen_init_nursery_allocator ();
+       sgen_init_fin_weak_hash ();
 
        sgen_register_fixed_internal_mem_type (INTERNAL_MEM_SECTION, SGEN_SIZEOF_GC_MEM_SECTION);
        sgen_register_fixed_internal_mem_type (INTERNAL_MEM_FINALIZE_READY_ENTRY, sizeof (FinalizeReadyEntry));