[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