[sgen] Function for querying current collection generation.
authorMark Probst <mark.probst@gmail.com>
Thu, 28 Oct 2010 22:23:08 +0000 (00:23 +0200)
committerMark Probst <mark.probst@gmail.com>
Sun, 7 Nov 2010 01:45:58 +0000 (02:45 +0100)
This lets the major collector query whether the current collection
is a minor or a major one.

mono/metadata/sgen-gc.c
mono/metadata/sgen-gc.h

index e2a7ee99560a08a4aaf1c21f4929ea9bc5739d8e..116a1189cf8ccc8ce5663132df2fb8be28990bc0 100644 (file)
@@ -556,12 +556,6 @@ typedef struct {
        void *value;
 } Ephemeron;
 
-enum {
-       GENERATION_NURSERY,
-       GENERATION_OLD,
-       GENERATION_MAX
-};
-
 int current_collection_generation = -1;
 
 /*
@@ -4797,6 +4791,12 @@ restart_world (int generation)
 
 #endif /* USE_SIGNAL_BASED_START_STOP_WORLD */
 
+int
+mono_sgen_get_current_collection_generation (void)
+{
+       return current_collection_generation;
+}
+
 void
 mono_gc_set_gc_callbacks (MonoGCCallbacks *callbacks)
 {
index 5e99839fdaeae6de33212011802bc51669921c0a..0d3be112d51453fab746e07b8d820a38072dd289 100644 (file)
@@ -606,6 +606,12 @@ struct _SgenInternalAllocator {
        long small_internal_mem_bytes [INTERNAL_MEM_MAX];
 };
 
+enum {
+       GENERATION_NURSERY,
+       GENERATION_OLD,
+       GENERATION_MAX
+};
+
 void mono_sgen_init_internal_allocator (void) MONO_INTERNAL;
 
 SgenInternalAllocator* mono_sgen_get_unmanaged_allocator (void) MONO_INTERNAL;
@@ -650,6 +656,7 @@ void mono_sgen_pin_stats_register_object (char *obj, size_t size);
 
 void mono_sgen_add_to_global_remset (gpointer ptr) MONO_INTERNAL;
 
+int mono_sgen_get_current_collection_generation (void) MONO_INTERNAL;
 
 typedef struct _SgenMajorCollector SgenMajorCollector;
 struct _SgenMajorCollector {