[svn:parrot] r43429 - branches/gc_encapsulate/src/gc
bacek at svn.parrot.org
bacek at svn.parrot.org
Tue Jan 12 14:00:38 UTC 2010
Author: bacek
Date: Tue Jan 12 14:00:37 2010
New Revision: 43429
URL: https://trac.parrot.org/parrot/changeset/43429
Log:
Add stubs for new allocation functions into GC MS.
Modified:
branches/gc_encapsulate/src/gc/gc_ms.c
Modified: branches/gc_encapsulate/src/gc/gc_ms.c
==============================================================================
--- branches/gc_encapsulate/src/gc/gc_ms.c Tue Jan 12 14:00:17 2010 (r43428)
+++ branches/gc_encapsulate/src/gc/gc_ms.c Tue Jan 12 14:00:37 2010 (r43429)
@@ -35,11 +35,32 @@
__attribute__nonnull__(2)
FUNC_MODIFIES(*pool);
+PARROT_CAN_RETURN_NULL
+static void* gc_ms_allocate_attributes(PARROT_INTERP, INTVAL type)
+ __attribute__nonnull__(1);
+
+PARROT_CAN_RETURN_NULL
+static PMC* gc_ms_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)
+ __attribute__nonnull__(1);
+
+PARROT_CAN_RETURN_NULL
+static STRING* gc_ms_allocate_string_header(PARROT_INTERP, UINTVAL flags)
+ __attribute__nonnull__(1);
+
static void gc_ms_finalize(PARROT_INTERP,
ARGIN(Memory_Pools * const mem_pools))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
+static void gc_ms_free_attributes(PARROT_INTERP, ARGFREE(void *attributes))
+ __attribute__nonnull__(1);
+
+static void gc_ms_free_pmc_header(PARROT_INTERP, ARGFREE(PMC *pmc))
+ __attribute__nonnull__(1);
+
+static void gc_ms_free_string_header(PARROT_INTERP, ARGFREE(STRING *string))
+ __attribute__nonnull__(1);
+
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
static void * gc_ms_get_free_object(PARROT_INTERP,
@@ -81,9 +102,21 @@
#define ASSERT_ARGS_gc_ms_alloc_objects __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_gc_ms_allocate_attributes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_allocate_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_allocate_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_gc_ms_finalize __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(mem_pools))
+#define ASSERT_ARGS_gc_ms_free_attributes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_free_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_free_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_gc_ms_get_free_object __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pool))
@@ -125,9 +158,18 @@
{
ASSERT_ARGS(Parrot_gc_ms_init)
- interp->gc_sys->do_gc_mark = gc_ms_mark_and_sweep;
- interp->gc_sys->finalize_gc_system = NULL;
- interp->gc_sys->init_pool = gc_ms_pool_init;
+ GC_Subsystem *gc = interp->gc_sys;
+ gc->do_gc_mark = gc_ms_mark_and_sweep;
+ gc->finalize_gc_system = NULL;
+ gc->init_pool = gc_ms_pool_init;
+
+ gc->allocate_pmc_header = gc_ms_allocate_pmc_header;
+ gc->free_pmc_header = gc_ms_free_pmc_header;
+ gc->allocate_string_header = gc_ms_allocate_string_header;
+ gc->free_string_header = gc_ms_free_string_header;
+ gc->allocate_attributes = gc_ms_allocate_attributes;
+ gc->free_attributes = gc_ms_free_attributes;
+
}
@@ -232,6 +274,70 @@
Parrot_gc_sweep_pool(interp, interp->mem_pools->constant_pmc_pool);
}
+/*
+
+=item C<static PMC* gc_ms_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)>
+
+=item C<static void gc_ms_free_pmc_header(PARROT_INTERP, PMC *pmc)>
+
+=item C<static STRING* gc_ms_allocate_string_header(PARROT_INTERP, UINTVAL
+flags)>
+
+=item C<static void gc_ms_free_string_header(PARROT_INTERP, STRING *string)>
+
+=item C<static void* gc_ms_allocate_attributes(PARROT_INTERP, INTVAL type)>
+
+=item C<static void gc_ms_free_attributes(PARROT_INTERP, void *attributes)>
+
+Various allocation/deallocation routines.
+
+=cut
+
+*/
+
+PARROT_CAN_RETURN_NULL
+static PMC*
+gc_ms_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)
+{
+ ASSERT_ARGS(gc_ms_allocate_pmc_header)
+ return NULL;
+}
+
+static void
+gc_ms_free_pmc_header(PARROT_INTERP, ARGFREE(PMC *pmc))
+{
+ ASSERT_ARGS(gc_ms_free_pmc_header)
+}
+
+
+PARROT_CAN_RETURN_NULL
+static STRING*
+gc_ms_allocate_string_header(PARROT_INTERP, UINTVAL flags)
+{
+ ASSERT_ARGS(gc_ms_allocate_string_header)
+ return NULL;
+}
+
+static void
+gc_ms_free_string_header(PARROT_INTERP, ARGFREE(STRING *string))
+{
+ ASSERT_ARGS(gc_ms_free_string_header)
+}
+
+
+PARROT_CAN_RETURN_NULL
+static void*
+gc_ms_allocate_attributes(PARROT_INTERP, INTVAL type)
+{
+ ASSERT_ARGS(gc_ms_allocate_attributes)
+ return NULL;
+}
+
+static void
+gc_ms_free_attributes(PARROT_INTERP, ARGFREE(void *attributes))
+{
+ ASSERT_ARGS(gc_ms_free_attributes)
+}
/*
More information about the parrot-commits
mailing list