src/share/vm/utilities/vmError.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/utilities/vmError.cpp	Wed Sep 16 15:19:21 2015
--- new/src/share/vm/utilities/vmError.cpp	Wed Sep 16 15:19:20 2015

*** 24,33 **** --- 24,34 ---- #include <fcntl.h> #include "precompiled.hpp" #include "code/codeCache.hpp" #include "compiler/compileBroker.hpp" + #include "compiler/disassembler.hpp" #include "gc/shared/collectedHeap.hpp" #include "prims/whitebox.hpp" #include "runtime/arguments.hpp" #include "runtime/atomic.inline.hpp" #include "runtime/frame.inline.hpp"
*** 702,711 **** --- 703,737 ---- if (_verbose && _context) { os::print_context(st, _context); st->cr(); } + STEP(265, "(printing code blob if possible)") + + if (_verbose && _context) { + CodeBlob* cb = CodeCache::find_blob(_pc); + if (cb != NULL) { + if (Interpreter::contains(_pc)) { + // The interpreter CodeBlob is very large so try to print the codelet instead. + InterpreterCodelet* codelet = Interpreter::codelet_containing(_pc); + if (codelet != NULL) { + codelet->print_on(st); + Disassembler::decode(codelet->code_begin(), codelet->code_end(), st); + } + } else { + StubCodeDesc* desc = StubCodeDesc::desc_for(_pc); + if (desc != NULL) { + desc->print_on(st); + Disassembler::decode(desc->begin(), desc->end(), st); + } else { + Disassembler::decode(cb, st); + st->cr(); + } + } + } + } + STEP(270, "(printing VM operation)" ) if (_verbose && _thread && _thread->is_VM_thread()) { VMThread* t = (VMThread*)_thread; VM_Operation* op = t->vm_operation();

src/share/vm/utilities/vmError.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File