src/share/vm/runtime/sharedRuntime.cpp
Print this page
rev 1083 : code cache unloading for webrev 091214
rev 1085 : checkpoint unloading changes on 100107
*** 1901,1923 ****
}
if (B == NULL) {
// CodeCache is full, disable compilation
// Ought to log this but compile log is only per compile thread
// and we're some non descript Java thread.
! UseInterpreter = true;
! if (UseCompiler || AlwaysCompileLoopMethods ) {
! #ifndef PRODUCT
! warning("CodeCache is full. Compiler has been disabled");
! if (CompileTheWorld || ExitOnFullCodeCache) {
! before_exit(JavaThread::current());
! exit_globals(); // will delete tty
! vm_direct_exit(CompileTheWorld ? 0 : 1);
! }
! #endif
! UseCompiler = false;
! AlwaysCompileLoopMethods = false;
! }
return 0; // Out of CodeCache space (_handlers[0] == NULL)
}
entry->relocate(B->instructions_begin());
#ifndef PRODUCT
// debugging suppport
--- 1901,1912 ----
}
if (B == NULL) {
// CodeCache is full, disable compilation
// Ought to log this but compile log is only per compile thread
// and we're some non descript Java thread.
! MutexUnlocker mu(AdapterHandlerLibrary_lock);
! CompileBroker::handle_full_code_cache();
return 0; // Out of CodeCache space (_handlers[0] == NULL)
}
entry->relocate(B->instructions_begin());
#ifndef PRODUCT
// debugging suppport
*** 2042,2064 ****
nm->post_compiled_method_load_event();
} else {
// CodeCache is full, disable compilation
// Ought to log this but compile log is only per compile thread
// and we're some non descript Java thread.
! UseInterpreter = true;
! if (UseCompiler || AlwaysCompileLoopMethods ) {
! #ifndef PRODUCT
! warning("CodeCache is full. Compiler has been disabled");
! if (CompileTheWorld || ExitOnFullCodeCache) {
! before_exit(JavaThread::current());
! exit_globals(); // will delete tty
! vm_direct_exit(CompileTheWorld ? 0 : 1);
! }
! #endif
! UseCompiler = false;
! AlwaysCompileLoopMethods = false;
! }
}
return nm;
}
#ifdef HAVE_DTRACE_H
--- 2031,2042 ----
nm->post_compiled_method_load_event();
} else {
// CodeCache is full, disable compilation
// Ought to log this but compile log is only per compile thread
// and we're some non descript Java thread.
! MutexUnlocker mu(AdapterHandlerLibrary_lock);
! CompileBroker::handle_full_code_cache();
}
return nm;
}
#ifdef HAVE_DTRACE_H