[svn:parrot] r49510 - branches/generational_gc/src/gc

bacek at svn.parrot.org bacek at svn.parrot.org
Mon Oct 11 08:54:03 UTC 2010


Author: bacek
Date: Mon Oct 11 08:54:03 2010
New Revision: 49510
URL: https://trac.parrot.org/parrot/changeset/49510

Log:
"Remark" objects from current generation during propagate. We do need to
bring all related objects into current generation.

Modified:
   branches/generational_gc/src/gc/gc_ms2.c

Modified: branches/generational_gc/src/gc/gc_ms2.c
==============================================================================
--- branches/generational_gc/src/gc/gc_ms2.c	Mon Oct 11 08:53:40 2010	(r49509)
+++ branches/generational_gc/src/gc/gc_ms2.c	Mon Oct 11 08:54:03 2010	(r49510)
@@ -1352,14 +1352,14 @@
             || !"Attempt to mark dead object");
 
     /* Objects from older generation will stay */
-    if (gen >= self->current_generation)
+    if (gen > self->current_generation)
         return;
 
     /* "Constant"... */
     if (pmc->flags & PObj_constant_FLAG)
         return;
 
-    if (gen == self->current_generation && pmc->flags & PObj_GC_generation_2_FLAG)
+    if ((gen == self->current_generation) && (pmc->flags & PObj_GC_generation_2_FLAG))
         return;
 
     LIST_REMOVE(self->objects[gen], item);
@@ -1367,8 +1367,9 @@
     pmc->flags &= ~(PObj_GC_generation_0_FLAG
         | PObj_GC_generation_1_FLAG
         | PObj_GC_generation_2_FLAG);
-    pmc->flags |= generation_to_flags(self->current_generation)
-                  | PObj_GC_generation_2_FLAG;
+    pmc->flags |= generation_to_flags(self->current_generation);
+
+    pmc->flags |= PObj_GC_generation_2_FLAG;
 }
 
 static void
@@ -1381,7 +1382,7 @@
     PARROT_ASSERT(item->owner == self->strings[gen]);
 
     /* Objects from older generation will stay */
-    if (gen >= self->current_generation)
+    if (gen > self->current_generation)
         return;
 
     /* "Constant"... */


More information about the parrot-commits mailing list