[sgen] Simplify prototype of drain gray stack function
authorVlad Brezae <brezaevlad@gmail.com>
Tue, 22 Sep 2015 01:19:52 +0000 (18:19 -0700)
committerVlad Brezae <brezaevlad@gmail.com>
Mon, 26 Oct 2015 22:32:35 +0000 (00:32 +0200)
The function only needs the gray queue since it is tied to the object operations.

mono/sgen/sgen-gc.c
mono/sgen/sgen-gc.h
mono/sgen/sgen-marksweep-drain-gray-stack.h
mono/sgen/sgen-marksweep.c

index 76bd21cee5cf41b4c3f02494ab32747a7a6416ec..6b2bbc075fd7ae3daac6b4266cde7295d0c4877a 100644 (file)
@@ -549,7 +549,7 @@ sgen_drain_gray_stack (int max_objs, ScanCopyContext ctx)
        GrayQueue *queue = ctx.queue;
 
        if (current_collection_generation == GENERATION_OLD && major_collector.drain_gray_stack)
-               return major_collector.drain_gray_stack (ctx);
+               return major_collector.drain_gray_stack (queue);
 
        do {
                int i;
index f02fb2a9285be243b9d5d356969d536f834ac9d1..c485e020c07a1d096c2437eefca19da879fecb75 100644 (file)
@@ -647,7 +647,7 @@ struct _SgenMajorCollector {
        void (*finish_nursery_collection) (void);
        void (*start_major_collection) (void);
        void (*finish_major_collection) (ScannedObjectCounts *counts);
-       gboolean (*drain_gray_stack) (ScanCopyContext ctx);
+       gboolean (*drain_gray_stack) (SgenGrayQueue *ctx);
        gboolean (*ptr_is_in_non_pinned_space) (char *ptr, char **start);
        gboolean (*ptr_is_from_pinned_alloc) (char *ptr);
        void (*report_pinned_memory_usage) (void);
index 01d276ad06df9c15d84703b677bf3974505f655b..90dc7f4af6c92eaf930c573caa0468a290859837 100644 (file)
@@ -228,12 +228,8 @@ SCAN_OBJECT_FUNCTION_NAME (GCObject *obj, SgenDescriptor desc, SgenGrayQueue *qu
 }
 
 static gboolean
-DRAIN_GRAY_STACK_FUNCTION_NAME (ScanCopyContext ctx)
+DRAIN_GRAY_STACK_FUNCTION_NAME (SgenGrayQueue *queue)
 {
-       SgenGrayQueue *queue = ctx.queue;
-
-       SGEN_ASSERT (0, ctx.ops->scan_object == major_scan_object_with_evacuation, "Wrong scan function");
-
        for (;;) {
                GCObject *obj;
                SgenDescriptor desc;
@@ -244,7 +240,7 @@ DRAIN_GRAY_STACK_FUNCTION_NAME (ScanCopyContext ctx)
                if (!obj)
                        return TRUE;
 
-               SCAN_OBJECT_FUNCTION_NAME (obj, desc, ctx.queue);
+               SCAN_OBJECT_FUNCTION_NAME (obj, desc, queue);
        }
 }
 
index 7db92343271937780b93ac08289716174949fbde..e0a75a6fa9f2e2aeb1200785ae88f966ffc24233 100644 (file)
@@ -1210,7 +1210,7 @@ static void major_scan_object_with_evacuation (GCObject *start, mword desc, Sgen
 #include "sgen-marksweep-drain-gray-stack.h"
 
 static gboolean
-drain_gray_stack (ScanCopyContext ctx)
+drain_gray_stack (SgenGrayQueue *queue)
 {
        gboolean evacuation = FALSE;
        int i;
@@ -1222,9 +1222,9 @@ drain_gray_stack (ScanCopyContext ctx)
        }
 
        if (evacuation)
-               return drain_gray_stack_with_evacuation (ctx);
+               return drain_gray_stack_with_evacuation (queue);
        else
-               return drain_gray_stack_no_evacuation (ctx);
+               return drain_gray_stack_no_evacuation (queue);
 }
 
 #include "sgen-marksweep-scan-object-concurrent.h"