[svn:parrot] r41461 - in trunk: include/parrot src/gc
chromatic at svn.parrot.org
chromatic at svn.parrot.org
Fri Sep 25 01:29:12 UTC 2009
Author: chromatic
Date: Fri Sep 25 01:29:09 2009
New Revision: 41461
URL: https://trac.parrot.org/parrot/changeset/41461
Log:
[GC] Fixed PMC marking in debugging builds by unilaterally moving the
recursion-stopping "Is this PMC already live?" check back into
Parrot_gc_mark_PMC_alive_fun().
Modified:
trunk/include/parrot/gc_api.h
trunk/src/gc/api.c
Modified: trunk/include/parrot/gc_api.h
==============================================================================
--- trunk/include/parrot/gc_api.h Fri Sep 25 00:58:19 2009 (r41460)
+++ trunk/include/parrot/gc_api.h Fri Sep 25 01:29:09 2009 (r41461)
@@ -466,7 +466,7 @@
#ifdef NDEBUG
# define Parrot_gc_mark_PMC_alive(interp, obj) \
- do if (! PMC_IS_NULL(obj) && !PObj_is_live_or_free_TESTALL(obj)) \
+ do if (! PMC_IS_NULL(obj)) \
Parrot_gc_mark_PMC_alive_fun((interp), (obj)); while (0)
# ifdef PARROT_IN_CORE
# define Parrot_gc_mark_STRING_alive(interp, obj) \
Modified: trunk/src/gc/api.c
==============================================================================
--- trunk/src/gc/api.c Fri Sep 25 00:58:19 2009 (r41460)
+++ trunk/src/gc/api.c Fri Sep 25 01:29:09 2009 (r41461)
@@ -252,6 +252,9 @@
if (!PMC_IS_NULL(obj)) {
PARROT_ASSERT(PObj_is_PMC_TEST(obj));
+ if (PObj_is_live_or_free_TESTALL(obj))
+ return;
+
/* mark it live */
PObj_live_SET(obj);
More information about the parrot-commits
mailing list