Mercurial > hg > graal-compiler
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 } |