Simply a bit the memgov code. Kill a duplicated header declaration.
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 2 Jul 2012 19:55:32 +0000 (16:55 -0300)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 2 Jul 2012 20:53:09 +0000 (17:53 -0300)
mono/metadata/sgen-alloc.c
mono/metadata/sgen-gc.h
mono/metadata/sgen-memory-governor.c

index 74db26c184773c72f96e37e0ec09b9a055085c72..4c443821ee4d3e1cb5506b367bf98470fe3921f7 100644 (file)
@@ -46,6 +46,7 @@
 
 #include "metadata/sgen-gc.h"
 #include "metadata/sgen-protocol.h"
+#include "metadata/sgen-memory-governor.h"
 #include "metadata/profiler-private.h"
 #include "metadata/marshal.h"
 #include "metadata/method-builder.h"
index e004c2fc6cd36e20e79aab432861e16a65be9077..c139074ba12ffd8c798123a0e63e81c26752d5e3 100644 (file)
@@ -797,7 +797,6 @@ void sgen_parallel_pin_or_update (void **ptr, void *obj, MonoVTable *vt, SgenGra
 void sgen_collect_major_no_lock (const char *reason) MONO_INTERNAL;
 void sgen_collect_nursery_no_lock (size_t requested_size) MONO_INTERNAL;
 void sgen_minor_collect_or_expand_inner (size_t size) MONO_INTERNAL;
-gboolean sgen_need_major_collection (mword space_needed) MONO_INTERNAL;
 void sgen_set_pinned_from_failed_allocation (mword objsize) MONO_INTERNAL;
 
 /* LOS */
index a9b93ab8768188970b213b3f3f387ab6a8c60962..3d0746643fbbdc20ec53576020dcb8650e189705 100644 (file)
@@ -72,18 +72,11 @@ static mword last_collection_los_memory_usage = 0;
 static mword last_collection_old_los_memory_usage;
 static mword last_collection_los_memory_alloced;
 
-static mword sgen_memgov_adjust_allowance (mword allowance_estimate, mword new_heap_size);
 static mword sgen_memgov_available_free_space (void);
 
 
 /* GC trigger heuristics. */
 
-static void
-reset_minor_collection_allowance (void)
-{
-       need_calculate_minor_collection_allowance = TRUE;
-}
-
 static void
 sgen_memgov_try_calculate_minor_collection_allowance (gboolean overwrite)
 {
@@ -131,7 +124,12 @@ sgen_memgov_try_calculate_minor_collection_allowance (gboolean overwrite)
 
        minor_collection_allowance = MAX (MIN (allowance_target, num_major_sections * major_collector.section_size + los_memory_usage), MIN_MINOR_COLLECTION_ALLOWANCE);
 
-       minor_collection_allowance = sgen_memgov_adjust_allowance (minor_collection_allowance, new_heap_size);
+       if (new_heap_size + minor_collection_allowance > soft_heap_limit) {
+               if (new_heap_size > soft_heap_limit)
+                       minor_collection_allowance = MIN_MINOR_COLLECTION_ALLOWANCE;
+               else
+                       minor_collection_allowance = MAX (soft_heap_limit - new_heap_size, MIN_MINOR_COLLECTION_ALLOWANCE);
+       }
 
        if (debug_print_allowance) {
                mword old_major = last_collection_old_num_major_sections * major_collector.section_size;
@@ -149,18 +147,13 @@ sgen_memgov_try_calculate_minor_collection_allowance (gboolean overwrite)
        need_calculate_minor_collection_allowance = FALSE;
 }
 
-static gboolean
-need_major_collection (mword space_needed)
-{
-       mword los_alloced = los_memory_usage - MIN (last_collection_los_memory_usage, los_memory_usage);
-       return (space_needed > sgen_memgov_available_free_space ()) ||
-               minor_collection_sections_alloced * major_collector.section_size + los_alloced > minor_collection_allowance;
-}
 
 gboolean
 sgen_need_major_collection (mword space_needed)
 {
-       return need_major_collection (space_needed);
+       mword los_alloced = los_memory_usage - MIN (last_collection_los_memory_usage, los_memory_usage);
+       return (space_needed > sgen_memgov_available_free_space ()) ||
+               minor_collection_sections_alloced * major_collector.section_size + los_alloced > minor_collection_allowance;
 }
 
 void
@@ -186,8 +179,7 @@ sgen_memgov_major_collection_start (void)
        last_collection_los_memory_alloced = los_memory_usage - MIN (last_collection_los_memory_usage, los_memory_usage);
        last_collection_old_los_memory_usage = los_memory_usage;
 
-       reset_minor_collection_allowance ();
-
+       need_calculate_minor_collection_allowance = TRUE;
        major_collection_happened = TRUE;
 }
 
@@ -318,18 +310,6 @@ sgen_memgov_available_free_space (void)
        return max_heap_size - MIN (allocated_heap, max_heap_size);
 }
 
-static mword
-sgen_memgov_adjust_allowance (mword allowance_estimate, mword new_heap_size)
-{
-       if (new_heap_size + allowance_estimate > soft_heap_limit) {
-               if (new_heap_size > soft_heap_limit)
-                       return MIN_MINOR_COLLECTION_ALLOWANCE;
-               else
-                       return MAX (soft_heap_limit - new_heap_size, MIN_MINOR_COLLECTION_ALLOWANCE);
-       }
-       return allowance_estimate;
-}
-
 void
 sgen_memgov_release_space (mword size, int space)
 {