[svn:parrot] r43817 - branches/gc_encapsulate_part2/src/gc
bacek at svn.parrot.org
bacek at svn.parrot.org
Tue Feb 9 14:20:46 UTC 2010
Author: bacek
Date: Tue Feb 9 14:20:46 2010
New Revision: 43817
URL: https://trac.parrot.org/parrot/changeset/43817
Log:
Encapsulate pmc_needs_early_collection
Modified:
branches/gc_encapsulate_part2/src/gc/api.c
branches/gc_encapsulate_part2/src/gc/gc_ms.c
branches/gc_encapsulate_part2/src/gc/gc_private.h
Modified: branches/gc_encapsulate_part2/src/gc/api.c
==============================================================================
--- branches/gc_encapsulate_part2/src/gc/api.c Tue Feb 9 14:20:26 2010 (r43816)
+++ branches/gc_encapsulate_part2/src/gc/api.c Tue Feb 9 14:20:46 2010 (r43817)
@@ -978,8 +978,7 @@
Parrot_gc_pmc_needs_early_collection(PARROT_INTERP, ARGMOD(PMC *pmc))
{
ASSERT_ARGS(Parrot_gc_pmc_needs_early_collection)
- PObj_needs_early_gc_SET(pmc);
- ++interp->mem_pools->num_early_gc_PMCs;
+ interp->gc_sys->pmc_needs_early_collection(interp, pmc);
}
/*
Modified: branches/gc_encapsulate_part2/src/gc/gc_ms.c
==============================================================================
--- branches/gc_encapsulate_part2/src/gc/gc_ms.c Tue Feb 9 14:20:26 2010 (r43816)
+++ branches/gc_encapsulate_part2/src/gc/gc_ms.c Tue Feb 9 14:20:46 2010 (r43817)
@@ -317,7 +317,9 @@
interp->gc_sys->do_gc_mark = gc_ms_mark_and_sweep;
interp->gc_sys->compact_string_pool = gc_ms_compact_memory_pool;
- interp->gc_sys->mark_special = gc_ms_mark_special;
+
+ interp->gc_sys->mark_special = gc_ms_mark_special;
+ interp->gc_sys->pmc_needs_early_collection = gc_ms_pmc_needs_early_collection;
interp->gc_sys->allocate_pmc_header = gc_ms_allocate_pmc_header;
interp->gc_sys->free_pmc_header = gc_ms_free_pmc_header;
@@ -507,6 +509,24 @@
/*
+=item C<void gc_ms_pmc_needs_early_collection(PARROT_INTERP, PMC *pmc)>
+
+Mark a PMC as needing timely destruction
+
+=cut
+
+*/
+
+void
+gc_ms_pmc_needs_early_collection(PARROT_INTERP, ARGMOD(PMC *pmc))
+{
+ ASSERT_ARGS(gc_ms_pmc_needs_early_collection)
+ PObj_needs_early_gc_SET(pmc);
+ ++interp->mem_pools->num_early_gc_PMCs;
+}
+
+/*
+
=item C<static void gc_ms_finalize_memory_pools(PARROT_INTERP, Memory_Pools *
const mem_pools)>
Modified: branches/gc_encapsulate_part2/src/gc/gc_private.h
==============================================================================
--- branches/gc_encapsulate_part2/src/gc/gc_private.h Tue Feb 9 14:20:26 2010 (r43816)
+++ branches/gc_encapsulate_part2/src/gc/gc_private.h Tue Feb 9 14:20:46 2010 (r43817)
@@ -105,7 +105,9 @@
void (*do_gc_mark)(PARROT_INTERP, UINTVAL flags);
void (*compact_string_pool)(PARROT_INTERP);
+
void (*mark_special)(PARROT_INTERP, PMC *);
+ void (*pmc_needs_early_collection)(PARROT_INTERP, PMC *);
void (*init_pool)(PARROT_INTERP, struct Fixed_Size_Pool *);
@@ -631,6 +633,11 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*pmc);
+void gc_ms_pmc_needs_early_collection(PARROT_INTERP, ARGMOD(PMC *pmc))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*pmc);
+
void Parrot_gc_ms_init(PARROT_INTERP)
__attribute__nonnull__(1);
@@ -651,6 +658,10 @@
#define ASSERT_ARGS_gc_ms_free_pmc_attributes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_gc_ms_pmc_needs_early_collection \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc))
#define ASSERT_ARGS_Parrot_gc_ms_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
More information about the parrot-commits
mailing list