Mercurial > hg > graal-compiler
changeset 2457:527977d4f740
7033779: CodeCache::largest_free_block may need to hold the CodeCache lock
Reviewed-by: kvn
author | never |
---|---|
date | Tue, 05 Apr 2011 19:16:52 -0700 |
parents | 8e77e1f26188 |
children | 98c560260039 |
files | src/share/vm/code/codeCache.cpp src/share/vm/code/codeCache.hpp |
diffstat | 2 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/code/codeCache.cpp Tue Apr 05 02:31:46 2011 -0700 +++ b/src/share/vm/code/codeCache.cpp Tue Apr 05 19:16:52 2011 -0700 @@ -964,3 +964,14 @@ nof_blobs(), nof_nmethods(), nof_adapters(), unallocated_capacity(), largest_free_block()); } + +size_t CodeCache::largest_free_block() { + // This is called both with and without CodeCache_lock held so + // handle both cases. + if (CodeCache_lock->owned_by_self()) { + return _heap->largest_free_block(); + } else { + MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); + return _heap->largest_free_block(); + } +}
--- a/src/share/vm/code/codeCache.hpp Tue Apr 05 02:31:46 2011 -0700 +++ b/src/share/vm/code/codeCache.hpp Tue Apr 05 19:16:52 2011 -0700 @@ -160,7 +160,7 @@ static size_t capacity() { return _heap->capacity(); } static size_t max_capacity() { return _heap->max_capacity(); } static size_t unallocated_capacity() { return _heap->unallocated_capacity(); } - static size_t largest_free_block() { return _heap->largest_free_block(); } + static size_t largest_free_block(); static bool needs_flushing() { return largest_free_block() < CodeCacheFlushingMinimumFreeSpace; } static bool needs_cache_clean() { return _needs_cache_clean; }