7033779: CodeCache::largest_free_block may need to hold the CodeCache lock
Reviewed-by: kvn
This commit is contained in:
parent
14dcde9439
commit
4f41ea7fff
@ -964,3 +964,14 @@ void CodeCache::log_state(outputStream* st) {
|
|||||||
nof_blobs(), nof_nmethods(), nof_adapters(),
|
nof_blobs(), nof_nmethods(), nof_adapters(),
|
||||||
unallocated_capacity(), largest_free_block());
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -160,7 +160,7 @@ class CodeCache : AllStatic {
|
|||||||
static size_t capacity() { return _heap->capacity(); }
|
static size_t capacity() { return _heap->capacity(); }
|
||||||
static size_t max_capacity() { return _heap->max_capacity(); }
|
static size_t max_capacity() { return _heap->max_capacity(); }
|
||||||
static size_t unallocated_capacity() { return _heap->unallocated_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_flushing() { return largest_free_block() < CodeCacheFlushingMinimumFreeSpace; }
|
||||||
|
|
||||||
static bool needs_cache_clean() { return _needs_cache_clean; }
|
static bool needs_cache_clean() { return _needs_cache_clean; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user