They do the same thing.
sgen_dummy_use (value);
}
-static void
-sgen_card_table_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
-{
- *(void**)slot_ptr = value;
- if (need_mod_union || sgen_ptr_in_nursery (value))
- sgen_card_table_mark_address ((mword)slot_ptr);
- sgen_dummy_use (value);
-}
-
static void
sgen_card_table_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
{
remset->wbarrier_set_field = sgen_card_table_wbarrier_set_field;
- remset->wbarrier_set_arrayref = sgen_card_table_wbarrier_set_arrayref;
remset->wbarrier_arrayref_copy = sgen_card_table_wbarrier_arrayref_copy;
remset->wbarrier_value_copy = sgen_card_table_wbarrier_value_copy;
remset->wbarrier_object_copy = sgen_card_table_wbarrier_object_copy;
remset.wbarrier_set_field (obj, field_ptr, value);
}
-void
-mono_gc_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
-{
- HEAVY_STAT (++stat_wbarrier_set_arrayref);
- if (ptr_in_nursery (slot_ptr)) {
- *(void**)slot_ptr = value;
- return;
- }
- SGEN_LOG (8, "Adding remset at %p", slot_ptr);
- if (value)
- binary_protocol_wbarrier (slot_ptr, value, value->vtable);
-
- remset.wbarrier_set_arrayref (arr, slot_ptr, value);
-}
-
void
mono_gc_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
{
typedef struct _SgenRememberedSet {
void (*wbarrier_set_field) (MonoObject *obj, gpointer field_ptr, MonoObject* value);
- void (*wbarrier_set_arrayref) (MonoArray *arr, gpointer slot_ptr, MonoObject* value);
void (*wbarrier_arrayref_copy) (gpointer dest_ptr, gpointer src_ptr, int count);
void (*wbarrier_value_copy) (gpointer dest, gpointer src, int count, size_t element_size);
void (*wbarrier_object_copy) (MonoObject* obj, MonoObject *src);
sgen_get_remset ()->wbarrier_object_copy (obj, src);
}
+void
+mono_gc_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
+{
+ HEAVY_STAT (++stat_wbarrier_set_arrayref);
+ if (sgen_ptr_in_nursery (slot_ptr)) {
+ *(void**)slot_ptr = value;
+ return;
+ }
+ SGEN_LOG (8, "Adding remset at %p", slot_ptr);
+ if (value)
+ binary_protocol_wbarrier (slot_ptr, value, value->vtable);
+
+ sgen_get_remset ()->wbarrier_set_field ((MonoObject*)arr, slot_ptr, value);
+}
+
/*
* Dummy filler objects
*/