From 0b7fbf1d6a7a7e7d089531cc7571678b2919e6df Mon Sep 17 00:00:00 2001 From: Vlad Brezae Date: Wed, 12 Oct 2016 13:57:46 +0300 Subject: [PATCH] [sgen] Properly init the size of a new gray queue section To avoid confusion --- mono/sgen/sgen-gray.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mono/sgen/sgen-gray.c b/mono/sgen/sgen-gray.c index 02d368c6a99..bd3fa6fa9ce 100644 --- a/mono/sgen/sgen-gray.c +++ b/mono/sgen/sgen-gray.c @@ -62,7 +62,8 @@ sgen_gray_object_alloc_queue_section (SgenGrayQueue *queue) STATE_SET (section, GRAY_QUEUE_SECTION_STATE_FLOATING); } - section->size = SGEN_GRAY_QUEUE_SECTION_SIZE; + /* Section is empty */ + section->size = 0; STATE_TRANSITION (section, GRAY_QUEUE_SECTION_STATE_FLOATING, GRAY_QUEUE_SECTION_STATE_ENQUEUED); @@ -104,7 +105,11 @@ sgen_gray_object_enqueue (SgenGrayQueue *queue, GCObject *obj, SgenDescriptor de if (G_UNLIKELY (!queue->first || queue->cursor == GRAY_LAST_CURSOR_POSITION (queue->first))) { if (queue->first) { - /* Set the current section size back to default, might have been changed by sgen_gray_object_dequeue_section */ + /* + * We don't actively update the section size with each push/pop. For the first + * section we determine the size from the cursor position. For the reset of the + * sections we need to have the size set. + */ queue->first->size = SGEN_GRAY_QUEUE_SECTION_SIZE; } -- 2.25.1