[svn:parrot] r47484 - branches/gc_massacre/src/gc

bacek at svn.parrot.org bacek at svn.parrot.org
Tue Jun 8 22:30:11 UTC 2010


Author: bacek
Date: Tue Jun  8 22:30:11 2010
New Revision: 47484
URL: https://trac.parrot.org/parrot/changeset/47484

Log:
Extract Parrot_gc_get_info from gc_ms_get_gc_info with statistics
related stuff.

Modified:
   branches/gc_massacre/src/gc/gc_ms.c
   branches/gc_massacre/src/gc/gc_private.h

Modified: branches/gc_massacre/src/gc/gc_ms.c
==============================================================================
--- branches/gc_massacre/src/gc/gc_ms.c	Tue Jun  8 22:22:20 2010	(r47483)
+++ branches/gc_massacre/src/gc/gc_ms.c	Tue Jun  8 22:30:11 2010	(r47484)
@@ -1905,12 +1905,6 @@
 
     Memory_Pools * const mem_pools = interp->mem_pools;
     switch (which) {
-        case TOTAL_MEM_ALLOC:
-            return mem_pools->stats.memory_allocated;
-        case GC_MARK_RUNS:
-            return mem_pools->stats.gc_mark_runs;
-        case GC_COLLECT_RUNS:
-            return mem_pools->stats.gc_collect_runs;
         case ACTIVE_PMCS:
             return mem_pools->pmc_pool->total_objects -
                    mem_pools->pmc_pool->num_free_objects;
@@ -1920,17 +1914,38 @@
             return mem_pools->pmc_pool->total_objects;
         case TOTAL_BUFFERS:
             return gc_ms_total_sized_buffers(mem_pools);
+        case IMPATIENT_PMCS:
+            return mem_pools->num_early_gc_PMCs;
+        default:
+            return Parrot_gc_get_info(interp, which, &mem_pools->stats);
+            break;
+    }
+    return 0;
+}
+
+/*
+TODO Move it somewhere.
+*/
+size_t
+Parrot_gc_get_info(PARROT_INTERP, Interpinfo_enum which, ARGIN(GC_Statistics *stats))
+{
+    ASSERT_ARGS(Parrot_gc_get_info)
+
+    switch (which) {
+        case TOTAL_MEM_ALLOC:
+            return stats->memory_allocated;
+        case GC_MARK_RUNS:
+            return stats->gc_mark_runs;
+        case GC_COLLECT_RUNS:
+            return stats->gc_collect_runs;
         case HEADER_ALLOCS_SINCE_COLLECT:
-            return mem_pools->stats.header_allocs_since_last_collect;
+            return stats->header_allocs_since_last_collect;
         case MEM_ALLOCS_SINCE_COLLECT:
-            return mem_pools->stats.mem_allocs_since_last_collect;
+            return stats->mem_allocs_since_last_collect;
         case TOTAL_COPIED:
-            return mem_pools->stats.memory_collected;
-        case IMPATIENT_PMCS:
-            return mem_pools->num_early_gc_PMCs;
+            return stats->memory_collected;
         case GC_LAZY_MARK_RUNS:
-            return mem_pools->stats.gc_lazy_mark_runs;
-        case EXTENDED_PMCS:
+            return stats->gc_lazy_mark_runs;
         default:
             break;
     }

Modified: branches/gc_massacre/src/gc/gc_private.h
==============================================================================
--- branches/gc_massacre/src/gc/gc_private.h	Tue Jun  8 22:22:20 2010	(r47483)
+++ branches/gc_massacre/src/gc/gc_private.h	Tue Jun  8 22:30:11 2010	(r47484)
@@ -582,6 +582,12 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*pmc);
 
+size_t Parrot_gc_get_info(PARROT_INTERP,
+    Interpinfo_enum which,
+    ARGIN(GC_Statistics *stats))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3);
+
 void Parrot_gc_ms_init(PARROT_INTERP)
         __attribute__nonnull__(1);
 
@@ -605,6 +611,9 @@
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_Parrot_gc_get_info __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(stats))
 #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