[svn:parrot] r46047 - in branches/compact_pool_revamp/src: gc string

chromatic at svn.parrot.org chromatic at svn.parrot.org
Tue Apr 27 01:25:43 UTC 2010


Author: chromatic
Date: Tue Apr 27 01:25:42 2010
New Revision: 46047
URL: https://trac.parrot.org/parrot/changeset/46047

Log:
[GC] Removed a memset() when returning a fresh header, as PMCs will overwrite
the data anyway.  STRINGs now explicitly perform their own memset() until we
can figure out how to remove it.  This improves the stress_strings benchmark by
1.315% and oofib by 1.778%.  Allocating PMCs is now faster.

Modified:
   branches/compact_pool_revamp/src/gc/api.c
   branches/compact_pool_revamp/src/gc/gc_ms.c
   branches/compact_pool_revamp/src/string/api.c

Modified: branches/compact_pool_revamp/src/gc/api.c
==============================================================================
--- branches/compact_pool_revamp/src/gc/api.c	Mon Apr 26 22:22:13 2010	(r46046)
+++ branches/compact_pool_revamp/src/gc/api.c	Tue Apr 27 01:25:42 2010	(r46047)
@@ -342,6 +342,7 @@
     PObj_get_FLAGS(pmc) = PObj_is_PMC_FLAG|flags;
     pmc->vtable         = NULL;
     PMC_data(pmc)       = NULL;
+    PMC_metadata(pmc)   = PMCNULL;
 
     return pmc;
 }

Modified: branches/compact_pool_revamp/src/gc/gc_ms.c
==============================================================================
--- branches/compact_pool_revamp/src/gc/gc_ms.c	Mon Apr 26 22:22:13 2010	(r46046)
+++ branches/compact_pool_revamp/src/gc/gc_ms.c	Tue Apr 27 01:25:42 2010	(r46047)
@@ -615,7 +615,7 @@
             ? interp->mem_pools->constant_pmc_pool
             : interp->mem_pools->pmc_pool;
 
-    return (PMC*)pool->get_free_object(interp, interp->mem_pools, pool);
+    return (PMC *)pool->get_free_object(interp, interp->mem_pools, pool);
 }
 
 /*
@@ -661,7 +661,9 @@
             ? interp->mem_pools->constant_string_header_pool
             : interp->mem_pools->string_header_pool;
 
-    return (STRING *)pool->get_free_object(interp, interp->mem_pools, pool);
+    STRING *s = (STRING *)pool->get_free_object(interp, interp->mem_pools, pool);
+    memset(s, 0, sizeof (STRING));
+    return s;
 }
 
 
@@ -1382,9 +1384,6 @@
     pool->free_list = ((GC_MS_PObj_Wrapper*)ptr)->next_ptr;
 #endif
 
-    /* PObj_flags_SETTO(ptr, 0); */
-    memset(ptr, 0, pool->object_size);
-
     --pool->num_free_objects;
 
     return ptr;

Modified: branches/compact_pool_revamp/src/string/api.c
==============================================================================
--- branches/compact_pool_revamp/src/string/api.c	Mon Apr 26 22:22:13 2010	(r46046)
+++ branches/compact_pool_revamp/src/string/api.c	Tue Apr 27 01:25:42 2010	(r46047)
@@ -766,9 +766,8 @@
         else
             s->strlen = CHARSET_CODEPOINTS(interp, s);
     }
-    else {
+    else
         s->strlen = s->bufused = 0;
-    }
 
     return s;
 }


More information about the parrot-commits mailing list