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