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

bacek at svn.parrot.org bacek at svn.parrot.org
Mon Sep 20 10:58:50 UTC 2010


Author: bacek
Date: Mon Sep 20 10:58:50 2010
New Revision: 49172
URL: https://trac.parrot.org/parrot/changeset/49172

Log:
GC_Subsystem has GC_Statistics now. Drop GC MS2 copy.

Modified:
   branches/gc_massacre/src/gc/gc_ms2.c

Modified: branches/gc_massacre/src/gc/gc_ms2.c
==============================================================================
--- branches/gc_massacre/src/gc/gc_ms2.c	Mon Sep 20 10:58:15 2010	(r49171)
+++ branches/gc_massacre/src/gc/gc_ms2.c	Mon Sep 20 10:58:50 2010	(r49172)
@@ -39,9 +39,6 @@
     /* Number of allocated objects before trigger gc */
     size_t gc_threshold;
 
-    /** statistics for GC **/
-    GC_Statistics stats;
-
     /* GC blocking */
     UINTVAL gc_mark_block_level;  /* How many outstanding GC block
                                      requests are there? */
@@ -469,7 +466,7 @@
                         self->fixed_size_allocator, attr_size);
     memset(PMC_data(pmc), 0, attr_size);
 
-    self->stats.mem_used_last_collect += attr_size;
+    interp->gc_sys->stats.mem_used_last_collect += attr_size;
 
     return PMC_data(pmc);
 }
@@ -483,7 +480,7 @@
         Parrot_gc_fixed_allocator_free(interp, self->fixed_size_allocator,
                 PMC_data(pmc), pmc->vtable->attr_size);
 
-        self->stats.mem_used_last_collect -= pmc->vtable->attr_size;
+        interp->gc_sys->stats.mem_used_last_collect -= pmc->vtable->attr_size;
     }
 }
 
@@ -494,8 +491,8 @@
     ASSERT_ARGS(gc_ms2_allocate_fixed_size_storage)
     MarkSweep_GC *self = (MarkSweep_GC *)interp->gc_sys->gc_private;
 
-    self->stats.memory_allocated      += size;
-    self->stats.mem_used_last_collect += size;
+    interp->gc_sys->stats.memory_allocated      += size;
+    interp->gc_sys->stats.mem_used_last_collect += size;
 
     return Parrot_gc_fixed_allocator_allocate(interp, self->fixed_size_allocator, size);
 }
@@ -507,8 +504,8 @@
     if (data) {
         MarkSweep_GC *self = (MarkSweep_GC *)interp->gc_sys->gc_private;
 
-        self->stats.memory_allocated      -= size;
-        self->stats.mem_used_last_collect -= size;
+        interp->gc_sys->stats.memory_allocated      -= size;
+        interp->gc_sys->stats.mem_used_last_collect -= size;
 
         Parrot_gc_fixed_allocator_free(interp, self->fixed_size_allocator, data, size);
     }
@@ -533,7 +530,7 @@
     if (which == IMPATIENT_PMCS)
         return self->num_early_gc_PMCs;
 
-    return Parrot_gc_get_info(interp, which, &self->stats);
+    return Parrot_gc_get_info(interp, which, &interp->gc_sys->stats);
 }
 
 
@@ -656,7 +653,7 @@
 
 #if 0
     /* Invoke M&S early. Freshly allocated "header" isn't header yet */
-    if ((++self->stats.header_allocs_since_last_collect > self->gc_threshold)
+    if ((++interp->gc_sys->stats.header_allocs_since_last_collect > self->gc_threshold)
         && self->pmc_allocator->num_free_objects <= 1) {
         gc_ms2_mark_and_sweep(interp, 0);
     }
@@ -665,9 +662,9 @@
     gc_ms2_maybe_mark_and_sweep(interp);
 
     /* Increase used memory. Not precisely accurate due Pool_Allocator paging */
-    ++self->stats.header_allocs_since_last_collect;
-    self->stats.memory_allocated      += sizeof (PMC);
-    self->stats.mem_used_last_collect += sizeof (PMC);
+    ++interp->gc_sys->stats.header_allocs_since_last_collect;
+    interp->gc_sys->stats.memory_allocated      += sizeof (PMC);
+    interp->gc_sys->stats.mem_used_last_collect += sizeof (PMC);
 
     ptr = (List_Item_Header *)Parrot_gc_pool_allocate(interp,
             self->pmc_allocator);
@@ -693,9 +690,9 @@
 
         Parrot_gc_pool_free(interp, self->pmc_allocator, Obj2LLH(pmc));
 
-        --self->stats.header_allocs_since_last_collect;
-        self->stats.memory_allocated      -= sizeof (PMC);
-        self->stats.mem_used_last_collect -= sizeof (PMC);
+        --interp->gc_sys->stats.header_allocs_since_last_collect;
+        interp->gc_sys->stats.memory_allocated      -= sizeof (PMC);
+        interp->gc_sys->stats.mem_used_last_collect -= sizeof (PMC);
     }
 }
 
@@ -782,7 +779,7 @@
     STRING           *ret;
 
 #if 0
-    if ((++self->stats.header_allocs_since_last_collect > self->gc_threshold)
+    if ((++interp->gc_sys->stats.header_allocs_since_last_collect > self->gc_threshold)
         && self->string_allocator->num_free_objects <= 1) {
         gc_ms2_mark_and_sweep(interp, 0);
     }
@@ -791,9 +788,9 @@
     gc_ms2_maybe_mark_and_sweep(interp);
 
     /* Increase used memory. Not precisely accurate due Pool_Allocator paging */
-    ++self->stats.header_allocs_since_last_collect;
-    self->stats.memory_allocated      += sizeof (STRING);
-    self->stats.mem_used_last_collect += sizeof (STRING);
+    ++interp->gc_sys->stats.header_allocs_since_last_collect;
+    interp->gc_sys->stats.memory_allocated      += sizeof (STRING);
+    interp->gc_sys->stats.mem_used_last_collect += sizeof (STRING);
 
     ptr = (List_Item_Header *)Parrot_gc_pool_allocate(interp,
             self->string_allocator);
@@ -820,9 +817,9 @@
 
         Parrot_gc_pool_free(interp, self->string_allocator, Obj2LLH(s));
 
-        --self->stats.header_allocs_since_last_collect;
-        self->stats.memory_allocated      -= sizeof (STRING);
-        self->stats.mem_used_last_collect -= sizeof (STRING);
+        --interp->gc_sys->stats.header_allocs_since_last_collect;
+        interp->gc_sys->stats.memory_allocated      -= sizeof (STRING);
+        interp->gc_sys->stats.mem_used_last_collect -= sizeof (STRING);
     }
 }
 
@@ -869,7 +866,7 @@
     ASSERT_ARGS(gc_ms_allocate_string_storage)
     MarkSweep_GC *self = (MarkSweep_GC *)interp->gc_sys->gc_private;
     Parrot_gc_str_allocate_string_storage(interp, &self->string_gc, str, size);
-    self->stats.mem_used_last_collect += size;
+    interp->gc_sys->stats.mem_used_last_collect += size;
 }
 
 static void
@@ -878,7 +875,7 @@
     ASSERT_ARGS(gc_ms_reallocate_string_storage)
     MarkSweep_GC *self = (MarkSweep_GC *)interp->gc_sys->gc_private;
     Parrot_gc_str_reallocate_string_storage(interp, &self->string_gc, str, size);
-    self->stats.mem_used_last_collect += size;
+    interp->gc_sys->stats.mem_used_last_collect += size;
 }
 
 static void
@@ -887,7 +884,7 @@
     ASSERT_ARGS(gc_ms_allocate_buffer_storage)
     MarkSweep_GC *self = (MarkSweep_GC *)interp->gc_sys->gc_private;
     Parrot_gc_str_allocate_buffer_storage(interp, &self->string_gc, str, size);
-    self->stats.mem_used_last_collect += size;
+    interp->gc_sys->stats.mem_used_last_collect += size;
 }
 
 static void
@@ -896,7 +893,7 @@
     ASSERT_ARGS(gc_ms_reallocate_buffer_storage)
     MarkSweep_GC *self = (MarkSweep_GC *)interp->gc_sys->gc_private;
     Parrot_gc_str_reallocate_buffer_storage(interp, &self->string_gc, str, size);
-    self->stats.mem_used_last_collect += size;
+    interp->gc_sys->stats.mem_used_last_collect += size;
 }
 
 /*
@@ -1011,9 +1008,9 @@
     //if (self->gc_threshold < 1024 * 1024 * 10)
     //    self->gc_threshold *= 1.1;
 
-    self->stats.header_allocs_since_last_collect = 0;
-    self->stats.mem_used_last_collect            = 0;
-    self->stats.gc_mark_runs++;
+    interp->gc_sys->stats.header_allocs_since_last_collect = 0;
+    interp->gc_sys->stats.mem_used_last_collect            = 0;
+    interp->gc_sys->stats.gc_mark_runs++;
     self->gc_mark_block_level--;
     /* We swept all dead objects */
     self->num_early_gc_PMCs                      = 0;
@@ -1324,7 +1321,7 @@
     MarkSweep_GC *self = (MarkSweep_GC *)interp->gc_sys->gc_private;
 
     /* Collect every 256M. Hardcode for now. Will be configured via CLI */
-    if (self->stats.mem_used_last_collect > 256 * 1024 * 1024) {
+    if (interp->gc_sys->stats.mem_used_last_collect > 256 * 1024 * 1024) {
         gc_ms2_mark_and_sweep(interp, 0);
     }
 }


More information about the parrot-commits mailing list