[svn:parrot] r42007 - trunk/src/gc
chromatic at svn.parrot.org
chromatic at svn.parrot.org
Thu Oct 22 01:17:54 UTC 2009
Author: chromatic
Date: Thu Oct 22 01:17:54 2009
New Revision: 42007
URL: https://trac.parrot.org/parrot/changeset/42007
Log:
[GC] Moved mark_special() into Parrot_gc_mark_PMC_alive_fun().
Modified:
trunk/src/gc/api.c
Modified: trunk/src/gc/api.c
==============================================================================
--- trunk/src/gc/api.c Thu Oct 22 01:17:49 2009 (r42006)
+++ trunk/src/gc/api.c Thu Oct 22 01:17:54 2009 (r42007)
@@ -255,9 +255,19 @@
/* if object is a PMC and contains buffers or PMCs, then attach the PMC
* to the chained mark list. */
- if (PObj_is_special_PMC_TEST(obj))
- mark_special(interp, obj);
- else if (PMC_metadata(obj))
+ if (PObj_is_special_PMC_TEST(obj)) {
+ if (PObj_is_PMC_shared_TEST(obj)) {
+ Parrot_Interp i = PMC_sync(obj)->owner;
+
+ if (!i->mem_pools->gc_mark_ptr)
+ i->mem_pools->gc_mark_ptr = obj;
+ }
+
+ if (PObj_custom_mark_TEST(obj))
+ VTABLE_mark(interp, obj);
+ }
+
+ if (PMC_metadata(obj))
Parrot_gc_mark_PMC_alive(interp, PMC_metadata(obj));
}
}
More information about the parrot-commits
mailing list