[svn:parrot] r41628 - branches/pcc_reapply/src/pmc

whiteknight at svn.parrot.org whiteknight at svn.parrot.org
Sat Oct 3 02:25:09 UTC 2009


Author: whiteknight
Date: Sat Oct  3 02:25:07 2009
New Revision: 41628
URL: https://trac.parrot.org/parrot/changeset/41628

Log:
[pcc] fix some of the mark logic in Capture PMC to just make sure that everything that I think should be getting marked is actually getting marked

Modified:
   branches/pcc_reapply/src/pmc/capture.pmc

Modified: branches/pcc_reapply/src/pmc/capture.pmc
==============================================================================
--- branches/pcc_reapply/src/pmc/capture.pmc	Sat Oct  3 01:49:52 2009	(r41627)
+++ branches/pcc_reapply/src/pmc/capture.pmc	Sat Oct  3 02:25:07 2009	(r41628)
@@ -18,7 +18,6 @@
 
 */
 
-#define CAPTURE_DATA_SIZE   2
 #define CAPTURE_array_CREATE(i, obj) \
     if (!PARROT_CAPTURE(obj)->array) \
         PARROT_CAPTURE(obj)->array = pmc_new((i), enum_class_ResizablePMCArray);
@@ -29,7 +28,6 @@
 pmclass Capture auto_attrs {
     ATTR PMC    *array;
     ATTR PMC    *hash;
-    ATTR INTVAL  data_size;
 
 /*
 
@@ -42,9 +40,6 @@
 */
 
     VTABLE void init() {
-        Parrot_Capture_attributes *capture =
-                (Parrot_Capture_attributes *) PMC_data(SELF);
-        capture->data_size      = CAPTURE_DATA_SIZE;
         PObj_custom_mark_SET(SELF);
     }
 
@@ -617,14 +612,11 @@
 */
 
     VTABLE void mark() {
-        PMC ** const data = PMC_data_typed(SELF, PMC **);
-        INTVAL i;
-
+        Parrot_Capture_attributes * const data = PARROT_CAPTURE(SELF);
         if (!data)
             return;
-
-        for (i = PARROT_CAPTURE(SELF)->data_size - 1; i >= 0; --i)
-            Parrot_gc_mark_PMC_alive(interp, data[i]);
+        Parrot_gc_mark_PMC_alive(INTERP, data->array);
+        Parrot_gc_mark_PMC_alive(INTERP, data->hash);
     }
 
 /*


More information about the parrot-commits mailing list