Mercurial > hg > graal-jvmci-8
diff src/share/vm/memory/heap.cpp @ 2353:1c0cf339481b
7025742: Can not use CodeCache::unallocated_capacity() with fragmented CodeCache
Summary: Use largest_free_block() instead of unallocated_capacity().
Reviewed-by: iveresov, never, ysr
author | kvn |
---|---|
date | Wed, 09 Mar 2011 09:15:16 -0800 |
parents | 51bd2d261853 |
children | 1d1603768966 |
line wrap: on
line diff
--- a/src/share/vm/memory/heap.cpp Sun Mar 06 22:09:23 2011 -0800 +++ b/src/share/vm/memory/heap.cpp Wed Mar 09 09:15:16 2011 -0800 @@ -316,12 +316,19 @@ } size_t CodeHeap::largest_free_block() const { + // First check unused space excluding free blocks. + size_t free_sz = size(_free_segments); + size_t unused = max_capacity() - allocated_capacity() - free_sz; + if (unused >= free_sz) + return unused; + + // Now check largest free block. size_t len = 0; for (FreeBlock* b = _freelist; b != NULL; b = b->link()) { if (b->length() > len) len = b->length(); } - return size(len); + return MAX2(unused, size(len)); } // Free list management