[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