comparison src/share/vm/runtime/frame.cpp @ 2022:2d4762ec74af

7003748: Decode C stack frames when symbols are presented (PhoneHome project) Summary: Implemented in-process C native stack frame decoding when symbols are available. Reviewed-by: coleenp, never
author zgu
date Sat, 11 Dec 2010 13:20:56 -0500
parents f95d63e2154a
children 54f5dd2aa1d9
comparison
equal deleted inserted replaced
1972:f95d63e2154a 2022:2d4762ec74af
39 #include "runtime/monitorChunk.hpp" 39 #include "runtime/monitorChunk.hpp"
40 #include "runtime/sharedRuntime.hpp" 40 #include "runtime/sharedRuntime.hpp"
41 #include "runtime/signature.hpp" 41 #include "runtime/signature.hpp"
42 #include "runtime/stubCodeGenerator.hpp" 42 #include "runtime/stubCodeGenerator.hpp"
43 #include "runtime/stubRoutines.hpp" 43 #include "runtime/stubRoutines.hpp"
44 #include "utilities/decoder.hpp"
45
44 #ifdef TARGET_ARCH_x86 46 #ifdef TARGET_ARCH_x86
45 # include "nativeInst_x86.hpp" 47 # include "nativeInst_x86.hpp"
46 #endif 48 #endif
47 #ifdef TARGET_ARCH_sparc 49 #ifdef TARGET_ARCH_sparc
48 # include "nativeInst_sparc.hpp" 50 # include "nativeInst_sparc.hpp"
650 652
651 // function name - os::dll_address_to_function_name() may return confusing 653 // function name - os::dll_address_to_function_name() may return confusing
652 // names if pc is within jvm.dll or libjvm.so, because JVM only has 654 // names if pc is within jvm.dll or libjvm.so, because JVM only has
653 // JVM_xxxx and a few other symbols in the dynamic symbol table. Do this 655 // JVM_xxxx and a few other symbols in the dynamic symbol table. Do this
654 // only for native libraries. 656 // only for native libraries.
655 if (!in_vm) { 657 if (!in_vm || Decoder::can_decode_C_frame_in_vm()) {
656 found = os::dll_address_to_function_name(pc, buf, buflen, &offset); 658 found = os::dll_address_to_function_name(pc, buf, buflen, &offset);
657 659
658 if (found) { 660 if (found) {
659 st->print(" %s+0x%x", buf, offset); 661 st->print(" %s+0x%x", buf, offset);
660 } 662 }