src/share/vm/compiler/compileBroker.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/compiler/compileBroker.cpp

src/share/vm/compiler/compileBroker.cpp

Print this page
rev 6793 : 8054889: Compiler team's implementation task
Summary: Adding three new diagnostic commands for compiler
Reviewed-by:

*** 164,174 **** void log_compile(JavaThread* thread, CompileTask* task) { StringLogMessage lm; stringStream sstr = lm.stream(); // msg.time_stamp().update_to(tty->time_stamp().ticks()); ! task->print_compilation(&sstr, NULL, true); log(thread, "%s", (const char*)lm); } void log_nmethod(JavaThread* thread, nmethod* nm) { log(thread, "nmethod %d%s " INTPTR_FORMAT " code ["INTPTR_FORMAT ", " INTPTR_FORMAT "]", --- 164,174 ---- void log_compile(JavaThread* thread, CompileTask* task) { StringLogMessage lm; stringStream sstr = lm.stream(); // msg.time_stamp().update_to(tty->time_stamp().ticks()); ! task->print_compilation(&sstr, NULL, true, false); log(thread, "%s", (const char*)lm); } void log_nmethod(JavaThread* thread, nmethod* nm) { log(thread, "nmethod %d%s " INTPTR_FORMAT " code ["INTPTR_FORMAT ", " INTPTR_FORMAT "]",
*** 326,357 **** guarantee(_code_handle != NULL, ""); _code_handle->set_code(nm); if (nm == NULL) _code_handle = NULL; // drop the handle also } - void CompileTask::mark_on_stack() { // Mark these methods as something redefine classes cannot remove. _method->set_on_stack(true); if (_hot_method != NULL) { _hot_method->set_on_stack(true); } } // ------------------------------------------------------------------ - // CompileTask::print - void CompileTask::print() { - tty->print("<CompileTask compile_id=%d ", _compile_id); - tty->print("method="); - _method->print_name(tty); - tty->print_cr(" osr_bci=%d is_blocking=%s is_complete=%s is_success=%s>", - _osr_bci, bool_to_str(_is_blocking), - bool_to_str(_is_complete), bool_to_str(_is_success)); - } - - - // ------------------------------------------------------------------ // CompileTask::print_line_on_error // // This function is called by fatal error handler when the thread // causing troubles is a compiler thread. // --- 326,344 ----
*** 365,387 **** print_compilation(st); } // ------------------------------------------------------------------ // CompileTask::print_line ! void CompileTask::print_line() { ttyLocker ttyl; // keep the following output all in one block // print compiler name if requested if (CIPrintCompilerName) tty->print("%s:", CompileBroker::compiler_name(comp_level())); ! print_compilation(); } - // ------------------------------------------------------------------ // CompileTask::print_compilation_impl void CompileTask::print_compilation_impl(outputStream* st, Method* method, int compile_id, int comp_level, bool is_osr_method, int osr_bci, bool is_blocking, ! const char* msg, bool short_form) { if (!short_form) { st->print("%7d ", (int) st->time_stamp().milliseconds()); // print timestamp } st->print("%4d ", compile_id); // print compilation number --- 352,373 ---- print_compilation(st); } // ------------------------------------------------------------------ // CompileTask::print_line ! void CompileTask::print_tty() { ttyLocker ttyl; // keep the following output all in one block // print compiler name if requested if (CIPrintCompilerName) tty->print("%s:", CompileBroker::compiler_name(comp_level())); ! print_compilation(tty); } // ------------------------------------------------------------------ // CompileTask::print_compilation_impl void CompileTask::print_compilation_impl(outputStream* st, Method* method, int compile_id, int comp_level, bool is_osr_method, int osr_bci, bool is_blocking, ! const char* msg, bool short_form, bool cr) { if (!short_form) { st->print("%7d ", (int) st->time_stamp().milliseconds()); // print timestamp } st->print("%4d ", compile_id); // print compilation number
*** 426,436 **** } if (msg != NULL) { st->print(" %s", msg); } ! if (!short_form) { st->cr(); } } // ------------------------------------------------------------------ --- 412,422 ---- } if (msg != NULL) { st->print(" %s", msg); } ! if (cr) { st->cr(); } } // ------------------------------------------------------------------
*** 492,504 **** for (int i = 0; i < inline_level; i++) st->print(" "); } // ------------------------------------------------------------------ // CompileTask::print_compilation ! void CompileTask::print_compilation(outputStream* st, const char* msg, bool short_form) { bool is_osr_method = osr_bci() != InvocationEntryBci; ! print_compilation_impl(st, method(), compile_id(), comp_level(), is_osr_method, osr_bci(), is_blocking(), msg, short_form); } // ------------------------------------------------------------------ // CompileTask::log_task void CompileTask::log_task(xmlStream* log) { --- 478,490 ---- for (int i = 0; i < inline_level; i++) st->print(" "); } // ------------------------------------------------------------------ // CompileTask::print_compilation ! void CompileTask::print_compilation(outputStream* st, const char* msg, bool short_form, bool cr) { bool is_osr_method = osr_bci() != InvocationEntryBci; ! print_compilation_impl(st, method(), compile_id(), comp_level(), is_osr_method, osr_bci(), is_blocking(), msg, short_form, cr); } // ------------------------------------------------------------------ // CompileTask::log_task void CompileTask::log_task(xmlStream* log) {
*** 619,629 **** ++_size; // Mark the method as being in the compile queue. task->method()->set_queued_for_compilation(); ! NOT_PRODUCT(print();) if (LogCompilation && xtty != NULL) { task->log_task_queued(); } --- 605,617 ---- ++_size; // Mark the method as being in the compile queue. task->method()->set_queued_for_compilation(); ! if (CIPrintCompileQueue) { ! print_tty(); ! } if (LogCompilation && xtty != NULL) { task->log_task_queued(); }
*** 784,811 **** task->mark_on_stack(); task = task->next(); } } ! #ifndef PRODUCT ! /** ! * Print entire compilation queue. ! */ ! void CompileQueue::print() { ! if (CIPrintCompileQueue) { ! ttyLocker ttyl; ! tty->print_cr("Contents of %s", name()); ! tty->print_cr("----------------------"); CompileTask* task = _first; while (task != NULL) { ! task->print_line(); task = task->next(); } - tty->print_cr("----------------------"); } } - #endif // PRODUCT CompilerCounters::CompilerCounters(const char* thread_name, int instance, TRAPS) { _current_method[0] = '\0'; _compile_type = CompileBroker::no_compile; --- 772,814 ---- task->mark_on_stack(); task = task->next(); } } ! ! CompileQueue* CompileBroker::compile_queue(int comp_level) { ! if (is_c2_compile(comp_level)) return _c2_compile_queue; ! if (is_c1_compile(comp_level)) return _c1_compile_queue; ! return NULL; ! } ! ! ! void CompileBroker::print_compile_queues(outputStream* st) { ! _c1_compile_queue->print(st); ! _c2_compile_queue->print(st); ! } ! ! ! void CompileQueue::print(outputStream* st) { ! st->print_cr("Contents of %s", name()); ! st->print_cr("----------------------------"); CompileTask* task = _first; + if (task == NULL) { + st->print_cr("Empty");; + } else { while (task != NULL) { ! task->print_compilation(st, NULL, true, true); task = task->next(); } } + st->print_cr("----------------------------"); + } + + void CompileQueue::print_tty() { + ttyLocker ttyl; + print(tty); } CompilerCounters::CompilerCounters(const char* thread_name, int instance, TRAPS) { _current_method[0] = '\0'; _compile_type = CompileBroker::no_compile;
*** 1066,1080 **** #if !defined(ZERO) && !defined(SHARK) assert(c2_compiler_count > 0 || c1_compiler_count > 0, "No compilers?"); #endif // !ZERO && !SHARK // Initialize the compilation queue if (c2_compiler_count > 0) { ! _c2_compile_queue = new CompileQueue("C2 CompileQueue", MethodCompileQueue_lock); _compilers[1]->set_num_compiler_threads(c2_compiler_count); } if (c1_compiler_count > 0) { ! _c1_compile_queue = new CompileQueue("C1 CompileQueue", MethodCompileQueue_lock); _compilers[0]->set_num_compiler_threads(c1_compiler_count); } int compiler_count = c1_compiler_count + c2_compiler_count; --- 1069,1083 ---- #if !defined(ZERO) && !defined(SHARK) assert(c2_compiler_count > 0 || c1_compiler_count > 0, "No compilers?"); #endif // !ZERO && !SHARK // Initialize the compilation queue if (c2_compiler_count > 0) { ! _c2_compile_queue = new CompileQueue("C2 compile queue", MethodCompileQueue_lock); _compilers[1]->set_num_compiler_threads(c2_compiler_count); } if (c1_compiler_count > 0) { ! _c1_compile_queue = new CompileQueue("C1 compile queue", MethodCompileQueue_lock); _compilers[0]->set_num_compiler_threads(c1_compiler_count); } int compiler_count = c1_compiler_count + c2_compiler_count;
*** 1890,1900 **** // Compile a method. // void CompileBroker::invoke_compiler_on_method(CompileTask* task) { if (PrintCompilation) { ResourceMark rm; ! task->print_line(); } elapsedTimer time; CompilerThread* thread = CompilerThread::current(); ResourceMark rm(thread); --- 1893,1903 ---- // Compile a method. // void CompileBroker::invoke_compiler_on_method(CompileTask* task) { if (PrintCompilation) { ResourceMark rm; ! task->print_tty(); } elapsedTimer time; CompilerThread* thread = CompilerThread::current(); ResourceMark rm(thread);
src/share/vm/compiler/compileBroker.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File