[sgen] Optional check that the concurrent collector doesn't update references.
[mono.git] / mono / metadata / sgen-cardtable.c
index 6dd91e2444261a132c8a5ed2c57bc95733a6c103..10524efe7b03dcf400a7c0c9c60e278d8da2b8df 100644 (file)
@@ -113,7 +113,7 @@ sgen_card_table_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int
 
                for (; dest >= start; --src, --dest) {
                        gpointer value = *src;
-                       *dest = value;
+                       SGEN_UPDATE_REFERENCE_ALLOW_NULL (dest, value);
                        if (need_mod_union || sgen_ptr_in_nursery (value))
                                sgen_card_table_mark_address ((mword)dest);
                        sgen_dummy_use (value);
@@ -122,7 +122,7 @@ sgen_card_table_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int
                gpointer *end = dest + count;
                for (; dest < end; ++src, ++dest) {
                        gpointer value = *src;
-                       *dest = value;
+                       SGEN_UPDATE_REFERENCE_ALLOW_NULL (dest, value);
                        if (need_mod_union || sgen_ptr_in_nursery (value))
                                sgen_card_table_mark_address ((mword)dest);
                        sgen_dummy_use (value);