src/share/vm/compiler/compileBroker.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/compiler/compileBroker.cpp Fri Aug 29 15:59:14 2014
--- new/src/share/vm/compiler/compileBroker.cpp Fri Aug 29 15:59:14 2014
*** 1741,1753 ****
--- 1741,1755 ----
// 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();
+ // Check if the CodeCache is full
+ int code_blob_type = 0;
+ if (CodeCache::is_full(&code_blob_type)) {
+ // The CodeHeap for code_blob_type is really full
+ handle_full_code_cache(code_blob_type);
}
CompileTask* task = queue->get();
if (task == NULL) {
continue;
*** 2073,2083 ****
--- 2075,2085 ----
/**
* 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;
*** 2090,2101 ****
--- 2092,2101 ----
xtty->print("%s", 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
*** 2113,2128 ****
--- 2113,2123 ----
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::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