comparison src/share/vm/utilities/vmError.cpp @ 16719:b1911c1e44c8

Dump disassembly in crash log
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Thu, 07 Aug 2014 11:06:09 -0700
parents 4ca6dc0799b6
children 3eed8712d410
comparison
equal deleted inserted replaced
16718:4703a9442f3f 16719:b1911c1e44c8
22 * 22 *
23 */ 23 */
24 24
25 #include "precompiled.hpp" 25 #include "precompiled.hpp"
26 #include "compiler/compileBroker.hpp" 26 #include "compiler/compileBroker.hpp"
27 #include "compiler/disassembler.hpp"
27 #include "gc_interface/collectedHeap.hpp" 28 #include "gc_interface/collectedHeap.hpp"
28 #include "prims/whitebox.hpp" 29 #include "prims/whitebox.hpp"
29 #include "runtime/arguments.hpp" 30 #include "runtime/arguments.hpp"
30 #include "runtime/frame.inline.hpp" 31 #include "runtime/frame.inline.hpp"
31 #include "runtime/init.hpp" 32 #include "runtime/init.hpp"
530 if (_verbose && _context) { 531 if (_verbose && _context) {
531 os::print_context(st, _context); 532 os::print_context(st, _context);
532 st->cr(); 533 st->cr();
533 } 534 }
534 535
536 STEP(102, "(printing code blob if possible)")
537
538 if (_verbose && _context) {
539 address pc = os::get_pc(_context);
540 CodeBlob* cb = CodeCache::find_blob(pc);
541 if (cb != NULL) {
542 if (Interpreter::contains(pc)) {
543 // The interpreter CodeBlob is very large so try to print the codelet instead.
544 InterpreterCodelet* codelet = Interpreter::codelet_containing(pc);
545 if (codelet != NULL) {
546 codelet->print_on(st);
547 Disassembler::decode(codelet->code_begin(), codelet->code_end(), st);
548 }
549 } else {
550 StubCodeDesc* desc = StubCodeDesc::desc_for(pc);
551 if (desc != NULL) {
552 desc->print_on(st);
553 Disassembler::decode(desc->begin(), desc->end(), st);
554 } else {
555 Disassembler::decode(cb, st);
556 st->cr();
557 }
558 }
559 }
560 }
561
535 STEP(105, "(printing register info)") 562 STEP(105, "(printing register info)")
536 563
537 // decode register contents if possible 564 // decode register contents if possible
538 if (_verbose && _context && Universe::is_fully_initialized()) { 565 if (_verbose && _context && Universe::is_fully_initialized()) {
539 os::print_register_info(st, _context); 566 os::print_register_info(st, _context);