Mercurial > hg > graal-compiler
comparison src/share/vm/utilities/vmError.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 | 36c186bcc085 |
comparison
equal
deleted
inserted
replaced
1972:f95d63e2154a | 2022:2d4762ec74af |
---|---|
31 #include "runtime/os.hpp" | 31 #include "runtime/os.hpp" |
32 #include "runtime/thread.hpp" | 32 #include "runtime/thread.hpp" |
33 #include "runtime/vmThread.hpp" | 33 #include "runtime/vmThread.hpp" |
34 #include "runtime/vm_operations.hpp" | 34 #include "runtime/vm_operations.hpp" |
35 #include "utilities/debug.hpp" | 35 #include "utilities/debug.hpp" |
36 #include "utilities/decoder.hpp" | |
36 #include "utilities/defaultStream.hpp" | 37 #include "utilities/defaultStream.hpp" |
37 #include "utilities/top.hpp" | 38 #include "utilities/top.hpp" |
38 #include "utilities/vmError.hpp" | 39 #include "utilities/vmError.hpp" |
39 | 40 |
40 // List of environment variables that should be reported in error log file. | 41 // List of environment variables that should be reported in error log file. |
514 | 515 |
515 // see if it's a valid frame | 516 // see if it's a valid frame |
516 if (fr.pc()) { | 517 if (fr.pc()) { |
517 st->print_cr("Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)"); | 518 st->print_cr("Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)"); |
518 | 519 |
520 // initialize decoder to decode C frames | |
521 Decoder decoder; | |
522 | |
519 int count = 0; | 523 int count = 0; |
520 | |
521 while (count++ < StackPrintLimit) { | 524 while (count++ < StackPrintLimit) { |
522 fr.print_on_error(st, buf, sizeof(buf)); | 525 fr.print_on_error(st, buf, sizeof(buf)); |
523 st->cr(); | 526 st->cr(); |
524 if (os::is_first_C_frame(&fr)) break; | 527 if (os::is_first_C_frame(&fr)) break; |
525 fr = os::get_sender_for_C_frame(&fr); | 528 fr = os::get_sender_for_C_frame(&fr); |