[svn:parrot] r47142 - branches/gc_massacre/src/gc
bacek at svn.parrot.org
bacek at svn.parrot.org
Sun May 30 09:39:18 UTC 2010
Author: bacek
Date: Sun May 30 09:39:18 2010
New Revision: 47142
URL: https://trac.parrot.org/parrot/changeset/47142
Log:
Add mark_{pmc,string,buffer} stubs into GCMS. Allocate @objects.
Modified:
branches/gc_massacre/src/gc/gc_ms.c
Modified: branches/gc_massacre/src/gc/gc_ms.c
==============================================================================
--- branches/gc_massacre/src/gc/gc_ms.c Sun May 30 09:38:51 2010 (r47141)
+++ branches/gc_massacre/src/gc/gc_ms.c Sun May 30 09:39:18 2010 (r47142)
@@ -16,6 +16,7 @@
#include "parrot/parrot.h"
#include "gc_private.h"
+#include "list.h"
PARROT_DOES_NOT_RETURN
static void failed_allocation(unsigned int line, unsigned long size) /* HEADERIZER SKIP */
@@ -153,10 +154,25 @@
static void gc_ms_mark_and_sweep(PARROT_INTERP, UINTVAL flags)
__attribute__nonnull__(1);
+static void gc_ms_mark_bufferlike_header(PARROT_INTERP, ARGMOD(Buffer *buf))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*buf);
+
+static void gc_ms_mark_pmc_header(PARROT_INTERP, ARGMOD(PMC *pmc))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*pmc);
+
static void gc_ms_mark_special(PARROT_INTERP, ARGIN(PMC *pmc))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
+static void gc_ms_mark_string_header(PARROT_INTERP, ARGMOD(STRING *str))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*str);
+
static void gc_ms_more_traceable_objects(PARROT_INTERP,
ARGIN(Memory_Pools *mem_pools),
ARGMOD(Fixed_Size_Pool *pool))
@@ -313,9 +329,18 @@
PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_gc_ms_mark_and_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_gc_ms_mark_bufferlike_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(buf))
+#define ASSERT_ARGS_gc_ms_mark_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(pmc))
#define ASSERT_ARGS_gc_ms_mark_special __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_gc_ms_mark_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+ PARROT_ASSERT_ARG(interp) \
+ , PARROT_ASSERT_ARG(str))
#define ASSERT_ARGS_gc_ms_more_traceable_objects __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(mem_pools) \
@@ -402,12 +427,15 @@
interp->gc_sys->allocate_pmc_header = gc_ms_allocate_pmc_header;
interp->gc_sys->free_pmc_header = gc_ms_free_pmc_header;
+ interp->gc_sys->mark_pmc_header = gc_ms_mark_pmc_header;
interp->gc_sys->allocate_string_header = gc_ms_allocate_string_header;
interp->gc_sys->free_string_header = gc_ms_free_string_header;
+ interp->gc_sys->mark_string_header = gc_ms_mark_string_header;
interp->gc_sys->allocate_bufferlike_header = gc_ms_allocate_bufferlike_header;
interp->gc_sys->free_bufferlike_header = gc_ms_free_bufferlike_header;
+ interp->gc_sys->mark_bufferlike_header = gc_ms_mark_bufferlike_header;
interp->gc_sys->allocate_pmc_attributes = gc_ms_allocate_pmc_attributes;
interp->gc_sys->free_pmc_attributes = gc_ms_free_pmc_attributes;
@@ -440,6 +468,9 @@
interp->gc_sys->get_gc_info = gc_ms_get_gc_info;
+ /* gc_private is @objects */
+ interp->gc_sys->gc_private = Parrot_gc_allocate_linked_list(interp);
+
initialize_var_size_pools(interp, interp->mem_pools);
initialize_fixed_size_pools(interp, interp->mem_pools);
Parrot_gc_initialize_fixed_size_pools(interp, interp->mem_pools,
@@ -692,6 +723,11 @@
++pool->num_free_objects;
}
+static void
+gc_ms_mark_pmc_header(PARROT_INTERP, ARGMOD(PMC *pmc))
+{
+}
+
/*
=item C<static STRING* gc_ms_allocate_string_header(PARROT_INTERP, UINTVAL
@@ -739,6 +775,11 @@
}
}
+static void
+gc_ms_mark_string_header(PARROT_INTERP, ARGMOD(STRING *str))
+{
+}
+
/*
=item C<static Buffer * gc_ms_allocate_bufferlike_header(PARROT_INTERP, size_t
@@ -786,6 +827,11 @@
pool->add_free_object(interp, interp->mem_pools, pool, obj);
}
+static void
+gc_ms_mark_bufferlike_header(PARROT_INTERP, ARGMOD(Buffer *buf))
+{
+}
+
/*
=over 4
More information about the parrot-commits
mailing list