< prev index next >

src/hotspot/share/utilities/nativeCallStack.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 22,31 **** --- 22,32 ---- * */ #include "precompiled.hpp" #include "runtime/os.hpp" + #include "utilities/decoder.hpp" #include "utilities/globalDefinitions.hpp" #include "utilities/nativeCallStack.hpp" const NativeCallStack NativeCallStack::EMPTY_STACK(0, false);
*** 100,122 **** // Decode and print this call path void NativeCallStack::print_on(outputStream* out, int indent) const { address pc; char buf[1024]; int offset; if (is_empty()) { for (int index = 0; index < indent; index ++) out->print(" "); out->print("[BOOTSTRAP]"); } else { for (int frame = 0; frame < NMT_TrackingStackDepth; frame ++) { pc = get_frame(frame); if (pc == NULL) break; // Print indent for (int index = 0; index < indent; index ++) out->print(" "); if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { ! out->print_cr("[" PTR_FORMAT "] %s+0x%x", p2i(pc), buf, offset); } else { ! out->print_cr("[" PTR_FORMAT "]", p2i(pc)); } } } } --- 101,129 ---- // Decode and print this call path void NativeCallStack::print_on(outputStream* out, int indent) const { address pc; char buf[1024]; int offset; + int line_no; if (is_empty()) { for (int index = 0; index < indent; index ++) out->print(" "); out->print("[BOOTSTRAP]"); } else { for (int frame = 0; frame < NMT_TrackingStackDepth; frame ++) { pc = get_frame(frame); if (pc == NULL) break; // Print indent for (int index = 0; index < indent; index ++) out->print(" "); if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { ! out->print("[" PTR_FORMAT "] %s+0x%x", p2i(pc), buf, offset); } else { ! out->print("[" PTR_FORMAT "]", p2i(pc)); } + + if (Decoder::get_source_info(pc, buf, sizeof(buf), &line_no)) { + out->print(" (%s:%d)", buf, line_no); + } + out->cr(); } } }
< prev index next >