mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-25 05:45:11 +02:00
8027593: performance drop with constrained codecache starting with hs25 b111
Fixed proper sweeping of small code cache sizes Reviewed-by: kvn, iveresov
This commit is contained in:
parent
c632cad9d5
commit
18ca4cc301
7 changed files with 184 additions and 121 deletions
|
@ -126,6 +126,7 @@ HS_DTRACE_PROBE_DECL9(hotspot, method__compile__end,
|
|||
|
||||
bool CompileBroker::_initialized = false;
|
||||
volatile bool CompileBroker::_should_block = false;
|
||||
volatile jint CompileBroker::_print_compilation_warning = 0;
|
||||
volatile jint CompileBroker::_should_compile_new_jobs = run_compilation;
|
||||
|
||||
// The installed compiler(s)
|
||||
|
@ -2027,11 +2028,10 @@ void CompileBroker::invoke_compiler_on_method(CompileTask* task) {
|
|||
#endif
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// CompileBroker::handle_full_code_cache
|
||||
//
|
||||
// The CodeCache is full. Print out warning and disable compilation or
|
||||
// try code cache cleaning so compilation can continue later.
|
||||
/**
|
||||
* The CodeCache is full. Print out warning and disable compilation
|
||||
* or try code cache cleaning so compilation can continue later.
|
||||
*/
|
||||
void CompileBroker::handle_full_code_cache() {
|
||||
UseInterpreter = true;
|
||||
if (UseCompiler || AlwaysCompileLoopMethods ) {
|
||||
|
@ -2048,12 +2048,9 @@ void CompileBroker::handle_full_code_cache() {
|
|||
xtty->stamp();
|
||||
xtty->end_elem();
|
||||
}
|
||||
warning("CodeCache is full. Compiler has been disabled.");
|
||||
warning("Try increasing the code cache size using -XX:ReservedCodeCacheSize=");
|
||||
|
||||
CodeCache::report_codemem_full();
|
||||
|
||||
|
||||
#ifndef PRODUCT
|
||||
if (CompileTheWorld || ExitOnFullCodeCache) {
|
||||
codecache_print(/* detailed= */ true);
|
||||
|
@ -2066,17 +2063,22 @@ void CompileBroker::handle_full_code_cache() {
|
|||
// Since code cache is full, immediately stop new compiles
|
||||
if (CompileBroker::set_should_compile_new_jobs(CompileBroker::stop_compilation)) {
|
||||
NMethodSweeper::log_sweep("disable_compiler");
|
||||
|
||||
// Switch to 'vm_state'. This ensures that possibly_sweep() can be called
|
||||
// without having to consider the state in which the current thread is.
|
||||
ThreadInVMfromUnknown in_vm;
|
||||
NMethodSweeper::possibly_sweep();
|
||||
}
|
||||
// Switch to 'vm_state'. This ensures that possibly_sweep() can be called
|
||||
// without having to consider the state in which the current thread is.
|
||||
ThreadInVMfromUnknown in_vm;
|
||||
NMethodSweeper::possibly_sweep();
|
||||
} else {
|
||||
disable_compilation_forever();
|
||||
}
|
||||
|
||||
// Print warning only once
|
||||
if (should_print_compiler_warning()) {
|
||||
warning("CodeCache is full. Compiler has been disabled.");
|
||||
warning("Try increasing the code cache size using -XX:ReservedCodeCacheSize=");
|
||||
codecache_print(/* detailed= */ true);
|
||||
}
|
||||
}
|
||||
codecache_print(/* detailed= */ true);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue