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

bacek at svn.parrot.org bacek at svn.parrot.org
Tue Oct 19 09:24:20 UTC 2010


Author: bacek
Date: Tue Oct 19 09:24:20 2010
New Revision: 49578
URL: https://trac.parrot.org/parrot/changeset/49578

Log:
Rework pmc_propagate function.

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	Tue Oct 19 09:24:08 2010	(r49577)
+++ branches/generational_gc/src/gc/gc_ms2.c	Tue Oct 19 09:24:20 2010	(r49578)
@@ -865,7 +865,6 @@
 
     gc_ms2_check_sanity(interp);
 
-
     // DEBUG ONLY. Simple recursive check
     interp->gc_sys->mark_pmc_header = gc_ms2_pmc_validate;
     interp->gc_sys->mark_str_header = gc_ms2_string_validate;
@@ -1494,17 +1493,14 @@
     if (pmc->flags & PObj_constant_FLAG)
         return;
 
-    if ((gen == self->current_generation) && (pmc->flags & PObj_GC_generation_2_FLAG))
-        return;
-
-    LIST_REMOVE(self->objects[gen], item);
-    LIST_APPEND(self->objects[self->current_generation], item);
-    pmc->flags &= ~(PObj_GC_generation_0_FLAG
-        | PObj_GC_generation_1_FLAG
-        | PObj_GC_generation_2_FLAG);
-    pmc->flags |= gen2flags(self->current_generation);
-
-    pmc->flags |= PObj_GC_generation_2_FLAG;
+    if (gen != self->current_generation) {
+        LIST_REMOVE(self->objects[gen], item);
+        LIST_APPEND(self->objects[self->current_generation], item);
+
+        pmc->flags &= ~(PObj_GC_generation_0_FLAG
+            | PObj_GC_generation_1_FLAG);
+        pmc->flags |= gen2flags(self->current_generation);
+    }
 
     PObj_live_SET(pmc);
 }


More information about the parrot-commits mailing list