[svn:parrot] r48566 - trunk/src/gc
chromatic at svn.parrot.org
chromatic at svn.parrot.org
Thu Aug 19 06:21:57 UTC 2010
Author: chromatic
Date: Thu Aug 19 06:21:56 2010
New Revision: 48566
URL: https://trac.parrot.org/parrot/changeset/48566
Log:
[gc] Forced freeing of empty blocks in compacting.
This patch is from TT #1742 by Nick Wellnhofer.
Modified:
trunk/src/gc/alloc_resources.c
Modified: trunk/src/gc/alloc_resources.c
==============================================================================
--- trunk/src/gc/alloc_resources.c Thu Aug 19 05:53:12 2010 (r48565)
+++ trunk/src/gc/alloc_resources.c Thu Aug 19 06:21:56 2010 (r48566)
@@ -448,19 +448,21 @@
if (mem_pools->gc_sweep_block_level)
return;
+ ++mem_pools->gc_sweep_block_level;
+
+ /* We're collecting */
+ mem_pools->mem_allocs_since_last_collect = 0;
+ mem_pools->header_allocs_since_last_collect = 0;
++mem_pools->gc_collect_runs;
/* Snag a block big enough for everything */
total_size = pad_pool_size(pool);
- if (total_size == 0)
+ if (total_size == 0) {
+ free_old_mem_blocks(mem_pools, pool, pool->top_block, total_size);
+ --mem_pools->gc_sweep_block_level;
return;
-
- ++mem_pools->gc_sweep_block_level;
-
- /* We're collecting */
- mem_pools->mem_allocs_since_last_collect = 0;
- mem_pools->header_allocs_since_last_collect = 0;
+ }
alloc_new_block(mem_pools, total_size, pool, "inside compact");
More information about the parrot-commits
mailing list