mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
4360113: Evict nmethods when code cache gets full
Speculatively unload the oldest nmethods when code cache gets full. Reviewed-by: never, kvn
This commit is contained in:
parent
9aa675b7e6
commit
a57d68e35b
19 changed files with 452 additions and 76 deletions
|
@ -66,7 +66,7 @@ bool CompilationPolicy::mustBeCompiled(methodHandle m) {
|
|||
if (!canBeCompiled(m)) return false;
|
||||
|
||||
return !UseInterpreter || // must compile all methods
|
||||
(UseCompiler && AlwaysCompileLoopMethods && m->has_loops()); // eagerly compile loop methods
|
||||
(UseCompiler && AlwaysCompileLoopMethods && m->has_loops() && CompileBroker::should_compile_new_jobs()); // eagerly compile loop methods
|
||||
}
|
||||
|
||||
// Returns true if m is allowed to be compiled
|
||||
|
@ -137,7 +137,7 @@ void SimpleCompPolicy::method_invocation_event( methodHandle m, TRAPS) {
|
|||
reset_counter_for_invocation_event(m);
|
||||
const char* comment = "count";
|
||||
|
||||
if (!delayCompilationDuringStartup() && canBeCompiled(m) && UseCompiler) {
|
||||
if (!delayCompilationDuringStartup() && canBeCompiled(m) && UseCompiler && CompileBroker::should_compile_new_jobs()) {
|
||||
nmethod* nm = m->code();
|
||||
if (nm == NULL ) {
|
||||
const char* comment = "count";
|
||||
|
@ -162,7 +162,7 @@ void SimpleCompPolicy::method_back_branch_event(methodHandle m, int branch_bci,
|
|||
int hot_count = m->backedge_count();
|
||||
const char* comment = "backedge_count";
|
||||
|
||||
if (!m->is_not_osr_compilable() && !delayCompilationDuringStartup() && canBeCompiled(m)) {
|
||||
if (!m->is_not_osr_compilable() && !delayCompilationDuringStartup() && canBeCompiled(m) && CompileBroker::should_compile_new_jobs()) {
|
||||
CompileBroker::compile_method(m, loop_top_bci, m, hot_count, comment, CHECK);
|
||||
|
||||
NOT_PRODUCT(trace_osr_completion(m->lookup_osr_nmethod_for(loop_top_bci));)
|
||||
|
@ -204,7 +204,7 @@ void StackWalkCompPolicy::method_invocation_event(methodHandle m, TRAPS) {
|
|||
reset_counter_for_invocation_event(m);
|
||||
const char* comment = "count";
|
||||
|
||||
if (m->code() == NULL && !delayCompilationDuringStartup() && canBeCompiled(m) && UseCompiler) {
|
||||
if (m->code() == NULL && !delayCompilationDuringStartup() && canBeCompiled(m) && UseCompiler && CompileBroker::should_compile_new_jobs()) {
|
||||
ResourceMark rm(THREAD);
|
||||
JavaThread *thread = (JavaThread*)THREAD;
|
||||
frame fr = thread->last_frame();
|
||||
|
@ -248,7 +248,7 @@ void StackWalkCompPolicy::method_back_branch_event(methodHandle m, int branch_bc
|
|||
int hot_count = m->backedge_count();
|
||||
const char* comment = "backedge_count";
|
||||
|
||||
if (!m->is_not_osr_compilable() && !delayCompilationDuringStartup() && canBeCompiled(m)) {
|
||||
if (!m->is_not_osr_compilable() && !delayCompilationDuringStartup() && canBeCompiled(m) && CompileBroker::should_compile_new_jobs()) {
|
||||
CompileBroker::compile_method(m, loop_top_bci, m, hot_count, comment, CHECK);
|
||||
|
||||
NOT_PRODUCT(trace_osr_completion(m->lookup_osr_nmethod_for(loop_top_bci));)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue