X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fsgen-toggleref.c;h=cd53191df22e3b6d2309209f87e5c3ec0ac2d875;hb=0b5364fcd04b2182d5e5f5d501ddc1fb985e3925;hp=0721c188bf131a9d46e00a85a54f1082c3d86042;hpb=bf1d286b72d9ffb15f926d40fd9e0b6b5fcf1c39;p=mono.git diff --git a/mono/metadata/sgen-toggleref.c b/mono/metadata/sgen-toggleref.c index 0721c188bf1..cd53191df22 100644 --- a/mono/metadata/sgen-toggleref.c +++ b/mono/metadata/sgen-toggleref.c @@ -44,18 +44,18 @@ typedef struct { static MonoToggleRefStatus (*toggleref_callback) (MonoObject *obj); static MonoGCToggleRef *toggleref_array; -static int toogleref_array_size; -static int toogleref_array_capacity; +static int toggleref_array_size; +static int toggleref_array_capacity; void sgen_process_togglerefs (void) { int i, w; - int toggle_ref_counts [3] = { 0 }; + int toggle_ref_counts [3] = { 0, 0, 0 }; - DEBUG (4, fprintf (gc_debug_file, "Proccessing ToggleRefs %d\n", toogleref_array_size)); + DEBUG (4, fprintf (gc_debug_file, "Proccessing ToggleRefs %d\n", toggleref_array_size)); - for (i = w = 0; i < toogleref_array_size; ++i) { + for (i = w = 0; i < toggleref_array_size; ++i) { int res; MonoGCToggleRef r = toggleref_array [i]; @@ -88,7 +88,7 @@ sgen_process_togglerefs (void) } } - toogleref_array_size = w; + toggleref_array_size = w; DEBUG (4, fprintf (gc_debug_file, "Done Proccessing ToggleRefs dropped %d strong %d weak %d final size %d\n", toggle_ref_counts [MONO_TOGGLE_REF_DROP], @@ -102,9 +102,9 @@ sgen_scan_togglerefs (CopyOrMarkObjectFunc copy_func, char *start, char *end, Sg { int i; - DEBUG (4, fprintf (gc_debug_file, "Scanning ToggleRefs %d\n", toogleref_array_size)); + DEBUG (4, fprintf (gc_debug_file, "Scanning ToggleRefs %d\n", toggleref_array_size)); - for (i = 0; i < toogleref_array_size; ++i) { + for (i = 0; i < toggleref_array_size; ++i) { if (toggleref_array [i].strong_ref) { char *object = toggleref_array [i].strong_ref; if (object >= start && object < end) { @@ -131,22 +131,22 @@ static void ensure_toggleref_capacity (int capacity) { if (!toggleref_array) { - toogleref_array_capacity = 32; + toggleref_array_capacity = 32; toggleref_array = sgen_alloc_internal_dynamic ( - toogleref_array_capacity * sizeof (MonoGCToggleRef), + toggleref_array_capacity * sizeof (MonoGCToggleRef), INTERNAL_MEM_TOGGLEREF_DATA); } - if (toogleref_array_size + capacity >= toogleref_array_capacity) { + if (toggleref_array_size + capacity >= toggleref_array_capacity) { MonoGCToggleRef *tmp; - int old_capacity = toogleref_array_capacity; - while (toogleref_array_capacity < toogleref_array_size + capacity) - toogleref_array_size *= 2; - + int old_capacity = toggleref_array_capacity; + while (toggleref_array_capacity < toggleref_array_size + capacity) + toggleref_array_size *= 2; + tmp = sgen_alloc_internal_dynamic ( - toogleref_array_capacity * sizeof (MonoGCToggleRef), + toggleref_array_capacity * sizeof (MonoGCToggleRef), INTERNAL_MEM_TOGGLEREF_DATA); - memcpy (tmp, toggleref_array, toogleref_array_size * sizeof (MonoGCToggleRef)); + memcpy (tmp, toggleref_array, toggleref_array_size * sizeof (MonoGCToggleRef)); sgen_free_internal_dynamic (toggleref_array, old_capacity * sizeof (MonoGCToggleRef), INTERNAL_MEM_TOGGLEREF_DATA); toggleref_array = tmp; @@ -172,10 +172,9 @@ mono_gc_toggleref_add (MonoObject *object, mono_bool strong_ref) sgen_gc_lock (); ensure_toggleref_capacity (1); - if (strong_ref) - toggleref_array [toogleref_array_size++].strong_ref = object; - else - toggleref_array [toogleref_array_size++].weak_ref = object; + toggleref_array [toggleref_array_size].strong_ref = strong_ref ? object : NULL; + toggleref_array [toggleref_array_size].weak_ref = strong_ref ? NULL : object; + ++toggleref_array_size; sgen_gc_unlock (); }