< prev index next >
src/share/vm/utilities/vmError.cpp
Print this page
*** 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"
*** 509,523 ****
JDK_Version::runtime_name() : "";
const char* runtime_version = JDK_Version::runtime_version() != NULL ?
JDK_Version::runtime_version() : "";
st->print_cr("# JRE version: %s (%s) (build %s)", runtime_name, buf, runtime_version);
// This is the long version with some default settings added
! st->print_cr("# Java VM: %s (%s, %s%s%s, %s, %s)",
Abstract_VM_Version::vm_name(),
Abstract_VM_Version::vm_release(),
Abstract_VM_Version::vm_info_string(),
TieredCompilation ? ", tiered" : "",
UseCompressedOops ? ", compressed oops" : "",
gc_mode(),
Abstract_VM_Version::vm_platform_string()
);
--- 510,528 ----
JDK_Version::runtime_name() : "";
const char* runtime_version = JDK_Version::runtime_version() != NULL ?
JDK_Version::runtime_version() : "";
st->print_cr("# JRE version: %s (%s) (build %s)", runtime_name, buf, runtime_version);
// This is the long version with some default settings added
! st->print_cr("# Java VM: %s (%s, %s%s%s%s%s, %s, %s)",
Abstract_VM_Version::vm_name(),
Abstract_VM_Version::vm_release(),
Abstract_VM_Version::vm_info_string(),
TieredCompilation ? ", tiered" : "",
+ #if INCLUDE_JVMCI
+ EnableJVMCI ? ", jvmci" : "",
+ UseJVMCICompiler ? ", jvmci compiler" : "",
+ #endif
UseCompressedOops ? ", compressed oops" : "",
gc_mode(),
Abstract_VM_Version::vm_platform_string()
);
*** 702,711 ****
--- 707,741 ----
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();
< prev index next >