From 34894dec5ffc819768053c7954e4cf32a237d2b0 Mon Sep 17 00:00:00 2001 From: bacek Date: Mon, 19 Apr 2010 14:12:04 +0000 Subject: [PATCH] Don't skip blocks with a lot of _free_ memory. git-svn-id: https://svn.parrot.org/parrot/branches/compact_pool_revamp@45805 d31e2699-5ff4-0310-a27c-f18f2fbe73fe --- src/gc/alloc_resources.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gc/alloc_resources.c b/src/gc/alloc_resources.c index ee5e31f6b7..512dfccbef 100644 --- a/src/gc/alloc_resources.c +++ b/src/gc/alloc_resources.c @@ -600,7 +600,8 @@ pad_pool_size(ARGIN(const Variable_Size_Pool *pool), size_t skip_pos = 0; while (cur_block) { - if (cur_block->size * 0.2 > cur_block->freed) { + if ((cur_block->size * 0.2 > cur_block->freed) + && (cur_block->free < cur_block->size * 0.2)) { /* Don't reclaim almost filled blocks */ /* TODO Keep blocks ordered by block->start to use binary search */ skip_blocks[skip_pos++] = cur_block;