mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
8005204: Code Cache Reduction: command line options implementation
Adding more detailed output on CodeCache usage Reviewed-by: kvn, vladidan
This commit is contained in:
parent
5613847626
commit
95cbed6639
6 changed files with 70 additions and 19 deletions
|
@ -30,6 +30,7 @@
|
|||
#include "code/icBuffer.hpp"
|
||||
#include "code/nmethod.hpp"
|
||||
#include "code/pcDesc.hpp"
|
||||
#include "compiler/compileBroker.hpp"
|
||||
#include "gc_implementation/shared/markSweep.hpp"
|
||||
#include "memory/allocation.inline.hpp"
|
||||
#include "memory/gcLocker.hpp"
|
||||
|
@ -39,6 +40,7 @@
|
|||
#include "oops/objArrayOop.hpp"
|
||||
#include "oops/oop.inline.hpp"
|
||||
#include "runtime/handles.inline.hpp"
|
||||
#include "runtime/arguments.hpp"
|
||||
#include "runtime/icache.hpp"
|
||||
#include "runtime/java.hpp"
|
||||
#include "runtime/mutexLocker.hpp"
|
||||
|
@ -168,6 +170,8 @@ nmethod* CodeCache::next_nmethod (CodeBlob* cb) {
|
|||
return (nmethod*)cb;
|
||||
}
|
||||
|
||||
static size_t maxCodeCacheUsed = 0;
|
||||
|
||||
CodeBlob* CodeCache::allocate(int size) {
|
||||
// Do not seize the CodeCache lock here--if the caller has not
|
||||
// already done so, we are going to lose bigtime, since the code
|
||||
|
@ -192,6 +196,8 @@ CodeBlob* CodeCache::allocate(int size) {
|
|||
(address)_heap->end() - (address)_heap->begin());
|
||||
}
|
||||
}
|
||||
maxCodeCacheUsed = MAX2(maxCodeCacheUsed, ((address)_heap->high_boundary() -
|
||||
(address)_heap->low_boundary()) - unallocated_capacity());
|
||||
verify_if_often();
|
||||
print_trace("allocation", cb, size);
|
||||
return cb;
|
||||
|
@ -928,7 +934,14 @@ void CodeCache::print_internals() {
|
|||
FREE_C_HEAP_ARRAY(int, buckets, mtCode);
|
||||
}
|
||||
|
||||
#endif // !PRODUCT
|
||||
|
||||
void CodeCache::print() {
|
||||
print_summary(tty);
|
||||
|
||||
#ifndef PRODUCT
|
||||
if (!Verbose) return;
|
||||
|
||||
CodeBlob_sizes live;
|
||||
CodeBlob_sizes dead;
|
||||
|
||||
|
@ -953,7 +966,7 @@ void CodeCache::print() {
|
|||
}
|
||||
|
||||
|
||||
if (Verbose) {
|
||||
if (WizardMode) {
|
||||
// print the oop_map usage
|
||||
int code_size = 0;
|
||||
int number_of_blobs = 0;
|
||||
|
@ -977,20 +990,30 @@ void CodeCache::print() {
|
|||
tty->print_cr(" map size = %d", map_size);
|
||||
}
|
||||
|
||||
#endif // !PRODUCT
|
||||
}
|
||||
|
||||
#endif // PRODUCT
|
||||
void CodeCache::print_summary(outputStream* st, bool detailed) {
|
||||
size_t total = (_heap->high_boundary() - _heap->low_boundary());
|
||||
st->print_cr("CodeCache: size=" SIZE_FORMAT "Kb used=" SIZE_FORMAT
|
||||
"Kb max_used=" SIZE_FORMAT "Kb free=" SIZE_FORMAT
|
||||
"Kb max_free_chunk=" SIZE_FORMAT "Kb",
|
||||
total/K, (total - unallocated_capacity())/K,
|
||||
maxCodeCacheUsed/K, unallocated_capacity()/K, largest_free_block()/K);
|
||||
|
||||
void CodeCache::print_bounds(outputStream* st) {
|
||||
st->print_cr("Code Cache [" INTPTR_FORMAT ", " INTPTR_FORMAT ", " INTPTR_FORMAT ")",
|
||||
_heap->low_boundary(),
|
||||
_heap->high(),
|
||||
_heap->high_boundary());
|
||||
st->print_cr(" total_blobs=" UINT32_FORMAT " nmethods=" UINT32_FORMAT
|
||||
" adapters=" UINT32_FORMAT " free_code_cache=" SIZE_FORMAT "Kb"
|
||||
" largest_free_block=" SIZE_FORMAT,
|
||||
nof_blobs(), nof_nmethods(), nof_adapters(),
|
||||
unallocated_capacity()/K, largest_free_block());
|
||||
if (detailed) {
|
||||
st->print_cr(" bounds [" INTPTR_FORMAT ", " INTPTR_FORMAT ", " INTPTR_FORMAT "]",
|
||||
_heap->low_boundary(),
|
||||
_heap->high(),
|
||||
_heap->high_boundary());
|
||||
st->print_cr(" total_blobs=" UINT32_FORMAT " nmethods=" UINT32_FORMAT
|
||||
" adapters=" UINT32_FORMAT,
|
||||
nof_blobs(), nof_nmethods(), nof_adapters());
|
||||
st->print_cr(" compilation: %s", CompileBroker::should_compile_new_jobs() ?
|
||||
"enabled" : Arguments::mode() == Arguments::_int ?
|
||||
"disabled (interpreter mode)" :
|
||||
"disabled (not enough contiguous free space left)");
|
||||
}
|
||||
}
|
||||
|
||||
void CodeCache::log_state(outputStream* st) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue