Fill scan starts with phony arrays.
authorRodrigo Kumpera <kumpera@gmail.com>
Tue, 20 Mar 2012 21:56:46 +0000 (18:56 -0300)
committerRodrigo Kumpera <kumpera@gmail.com>
Tue, 20 Mar 2012 21:58:29 +0000 (18:58 -0300)
mono/metadata/sgen-nursery-allocator.c

index d73b5dc5ac1a0ff90faa487c498dbac44edff57a..00719193b2f6352e80dec5a92d528bd82adc2127 100644 (file)
@@ -481,6 +481,7 @@ mono_sgen_clear_range (char *start, char *end)
        o->obj.synchronisation = GINT_TO_POINTER (-1);
        o->bounds = NULL;
        o->max_length = size - sizeof (MonoArray);
+       mono_sgen_set_nursery_scan_start (start);
        g_assert (start + mono_sgen_safe_object_get_size ((MonoObject*)o) == end);
 }
 
@@ -561,7 +562,7 @@ mono_sgen_build_nursery_fragments (GCMemSection *nursery_section, void **start,
                frag_end = start [i];
                /* remove the pin bit from pinned objects */
                SGEN_UNPIN_OBJECT (frag_end);
-               nursery_section->scan_starts [((char*)frag_end - (char*)nursery_section->data)/SGEN_SCAN_START_SIZE] = frag_end;
+               mono_sgen_set_nursery_scan_start (frag_end);
                frag_size = frag_end - frag_start;
                if (frag_size)
                        add_nursery_frag (frag_size, frag_start, frag_end);