[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