src/share/vm/compiler/compileBroker.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
8015774 Cdiff src/share/vm/compiler/compileBroker.cpp
src/share/vm/compiler/compileBroker.cpp
Print this page
*** 1583,1593 ****
// a problem.
void CompileBroker::shutdown_compiler_runtime(AbstractCompiler* comp, CompilerThread* thread) {
// Free buffer blob, if allocated
if (thread->get_buffer_blob() != NULL) {
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
! CodeCache::free(thread->get_buffer_blob());
}
if (comp->should_perform_shutdown()) {
// There are two reasons for shutting down the compiler
// 1) compiler runtime initialization failed
--- 1583,1593 ----
// a problem.
void CompileBroker::shutdown_compiler_runtime(AbstractCompiler* comp, CompilerThread* thread) {
// Free buffer blob, if allocated
if (thread->get_buffer_blob() != NULL) {
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
! CodeCache::free(thread->get_buffer_blob(), CodeBlobType::NonMethod);
}
if (comp->should_perform_shutdown()) {
// There are two reasons for shutting down the compiler
// 1) compiler runtime initialization failed
*** 1667,1679 ****
// space in the code cache to generate the necessary stubs, etc.
while (!is_compilation_disabled_forever()) {
// We need this HandleMark to avoid leaking VM handles.
HandleMark hm(thread);
! if (CodeCache::unallocated_capacity() < CodeCacheMinimumFreeSpace) {
! // the code cache is really full
! handle_full_code_cache();
}
CompileTask* task = queue->get();
if (task == NULL) {
continue;
--- 1667,1682 ----
// space in the code cache to generate the necessary stubs, etc.
while (!is_compilation_disabled_forever()) {
// We need this HandleMark to avoid leaking VM handles.
HandleMark hm(thread);
! // Iterate over non-profiled and profiled nmethods
! for (int code_blob_type = CodeBlobType::MethodNonProfiled; code_blob_type <= CodeBlobType::MethodProfiled; ++code_blob_type) {
! if (CodeCache::is_full(code_blob_type)) {
! // The CodeHeap for CodeBlobType is really full
! handle_full_code_cache(code_blob_type);
! }
}
CompileTask* task = queue->get();
if (task == NULL) {
continue;
*** 1997,2007 ****
/**
* 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 ) {
if (xtty != NULL) {
ResourceMark rm;
stringStream s;
--- 2000,2010 ----
/**
* 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(int code_blob_type) {
UseInterpreter = true;
if (UseCompiler || AlwaysCompileLoopMethods ) {
if (xtty != NULL) {
ResourceMark rm;
stringStream s;
*** 2014,2025 ****
xtty->print(s.as_string());
xtty->stamp();
xtty->end_elem();
}
- CodeCache::report_codemem_full();
-
#ifndef PRODUCT
if (CompileTheWorld || ExitOnFullCodeCache) {
codecache_print(/* detailed= */ true);
before_exit(JavaThread::current());
exit_globals(); // will delete tty
--- 2017,2026 ----
*** 2037,2052 ****
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);
! }
}
}
// ------------------------------------------------------------------
// CompileBroker::set_last_compile
--- 2038,2048 ----
NMethodSweeper::possibly_sweep();
} else {
disable_compilation_forever();
}
! CodeCache::report_codemem_full(code_blob_type, should_print_compiler_warning());
}
}
// ------------------------------------------------------------------
// CompileBroker::set_last_compile
src/share/vm/compiler/compileBroker.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File