[svn:parrot] r47289 - branches/gc_massacre/src/gc

bacek at svn.parrot.org bacek at svn.parrot.org
Wed Jun 2 09:56:44 UTC 2010


Author: bacek
Date: Wed Jun  2 09:56:44 2010
New Revision: 47289
URL: https://trac.parrot.org/parrot/changeset/47289

Log:
Quick hack - register "constant" pmcs in interp.

Modified:
   branches/gc_massacre/src/gc/gc_tms.c

Modified: branches/gc_massacre/src/gc/gc_tms.c
==============================================================================
--- branches/gc_massacre/src/gc/gc_tms.c	Wed Jun  2 09:56:29 2010	(r47288)
+++ branches/gc_massacre/src/gc/gc_tms.c	Wed Jun  2 09:56:44 2010	(r47289)
@@ -596,18 +596,17 @@
         gc_tms_mark_and_sweep(interp, 0);
     }
 
-    /* Allocate "constant" PMCs from constant allocator and forget about them */
+    ptr = (List_Item_Header *)Parrot_gc_pool_allocate(interp,
+        self->pmc_allocator);
+    Parrot_gc_list_append(interp, self->objects, ptr);
+
+    ret = LLH2Obj_typed(ptr, PMC);
+
+    /* Quick hack to register "constant" pmcs */
     if (flags & PObj_constant_FLAG) {
-        ptr = (List_Item_Header *)Parrot_gc_pool_allocate(interp,
-            self->constant_pmc_allocator);
-    }
-    else {
-        ptr = (List_Item_Header *)Parrot_gc_pool_allocate(interp,
-            self->pmc_allocator);
-        Parrot_gc_list_append(interp, self->objects, ptr);
+        Parrot_pmc_gc_register(interp, ret);
     }
 
-    ret = LLH2Obj_typed(ptr, PMC);
     return ret;
 }
 
@@ -759,10 +758,6 @@
     TriColor_GC      *self = (TriColor_GC *)interp->gc_sys->gc_private;
     List_Item_Header *item = Obj2LLH(pmc);
 
-    /* "constant" objects aren't managed by GC at all. */
-    if (PObj_constant_TEST(pmc))
-        return;
-
     /* Object was already marked as grey. Skip it */
     if (PObj_grey_TEST(pmc))
         return;
@@ -805,15 +800,16 @@
     if (Parrot_gc_list_is_owned(interp, self->objects, item))
         return 1;
     return 0;
-    */
+#else
     return 1;
+#endif
 }
 
 static void
 gc_tms_mark_pobj_header(PARROT_INTERP, ARGIN_NULLOK(PObj * obj))
 {
     ASSERT_ARGS(gc_tms_mark_pobj_header)
-    if (obj && !PObj_constant_TEST(obj)) {
+    if (obj) {
         if (PObj_is_PMC_TEST(obj))
             gc_tms_mark_pmc_header(interp, (PMC *)obj);
         else


More information about the parrot-commits mailing list