[svn:parrot] r49563 - in branches/generational_gc: include/parrot src/gc

bacek at svn.parrot.org bacek at svn.parrot.org
Mon Oct 18 10:42:59 UTC 2010


Author: bacek
Date: Mon Oct 18 10:42:58 2010
New Revision: 49563
URL: https://trac.parrot.org/parrot/changeset/49563

Log:
Separate wb_triggered flag from generic generation_2 flag to simplify
debugging.

Modified:
   branches/generational_gc/include/parrot/pobj.h
   branches/generational_gc/src/gc/gc_ms2.c

Modified: branches/generational_gc/include/parrot/pobj.h
==============================================================================
--- branches/generational_gc/include/parrot/pobj.h	Mon Oct 18 01:42:07 2010	(r49562)
+++ branches/generational_gc/include/parrot/pobj.h	Mon Oct 18 10:42:58 2010	(r49563)
@@ -191,7 +191,10 @@
     /* True if the PMC is a class */
     PObj_is_class_FLAG          = POBJ_FLAG(29),
     /* True if the PMC is a parrot object */
-    PObj_is_object_FLAG         = POBJ_FLAG(30)
+    PObj_is_object_FLAG         = POBJ_FLAG(30),
+
+    /* Set when write barrier triggered */
+    PObj_GC_wb_triggered_FLAG   = POBJ_FLAG(31)
 
 } PObj_flags;
 #undef POBJ_FLAG

Modified: branches/generational_gc/src/gc/gc_ms2.c
==============================================================================
--- branches/generational_gc/src/gc/gc_ms2.c	Mon Oct 18 01:42:07 2010	(r49562)
+++ branches/generational_gc/src/gc/gc_ms2.c	Mon Oct 18 10:42:58 2010	(r49563)
@@ -659,7 +659,7 @@
         PMC *pmc = LLH2Obj_typed(tmp, PMC);
 
         /* write_barrier can set this flag */
-        pmc->flags &= ~PObj_GC_generation_2_FLAG;
+        pmc->flags &= ~PObj_GC_wb_triggered_FLAG;
 
         /* if object is a PMC and contains buffers or PMCs, then attach the PMC
          * to the chained mark list. */
@@ -1442,7 +1442,8 @@
             /* Paint live objects white */
             PObj_live_CLEAR(obj);
 
-            obj->flags &= ~PObj_GC_generation_2_FLAG;
+            obj->flags &= ~PObj_GC_generation_2_FLAG
+                          | ~PObj_GC_wb_triggered_FLAG;
         }
         else if (!PObj_constant_TEST(obj)) {
             PObj_on_free_list_SET(obj);
@@ -1743,7 +1744,7 @@
     size_t            gen  = PObj_to_generation(pmc);
 
     /* If we are already marked this one - skip it */
-    if (pmc->flags & PObj_GC_generation_2_FLAG)
+    if (pmc->flags & PObj_GC_wb_triggered_FLAG)
         return;
 
     if (!gen)
@@ -1751,7 +1752,7 @@
 
     LIST_REMOVE(self->objects[PObj_to_generation(pmc)], item);
     LIST_APPEND(self->root_objects, item);
-    pmc->flags |= PObj_GC_generation_2_FLAG;
+    pmc->flags |= PObj_GC_wb_triggered_FLAG;
     PObj_live_SET(pmc);
 }
 


More information about the parrot-commits mailing list