{
int count = 0;
+ SGEN_ASSERT (0, ((mword)start & (SIZEOF_VOID_P - 1)) == 0, "Why are we scanning for references in unaligned memory ?");
+
#if defined(VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE) && !defined(_WIN64)
VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE (start, (char*)end - (char*)start);
#endif
major_finish_concurrent_collection (wait_to_finish);
oldest_generation_collected = GENERATION_OLD;
} else {
- sgen_workers_signal_start_nursery_collection_and_wait ();
-
major_update_concurrent_collection ();
if (generation_to_collect == GENERATION_NURSERY)
collect_nursery (NULL, FALSE);
-
- sgen_workers_signal_finish_nursery_collection ();
}
goto done;
SGEN_UPDATE_REFERENCE_ALLOW_NULL (ptr, value);
if (ptr_in_nursery (value) || concurrent_collection_in_progress)
mono_gc_wbarrier_generic_nostore (ptr);
- mono_gc_dummy_use (value);
+ sgen_dummy_use (value);
}
/* Same as mono_gc_wbarrier_generic_store () but performs the store
if (ptr_in_nursery (value) || concurrent_collection_in_progress)
mono_gc_wbarrier_generic_nostore (ptr);
- mono_gc_dummy_use (value);
+ sgen_dummy_use (value);
}
void
sgen_init_descriptors ();
sgen_init_gray_queues ();
sgen_init_allocator ();
+ sgen_init_gchandles ();
sgen_register_fixed_internal_mem_type (INTERNAL_MEM_SECTION, SGEN_SIZEOF_GC_MEM_SECTION);
sgen_register_fixed_internal_mem_type (INTERNAL_MEM_GRAY_QUEUE, sizeof (GrayQueueSection));