|
| ProfilerDartStackWalker (Thread *thread, Sample *sample, SampleBuffer *sample_buffer, uword pc, uword fp, uword sp, uword lr, bool allocation_sample, intptr_t skip_count=0) |
|
void | walk () |
|
| ProfilerStackWalker (Dart_Port port_id, Sample *head_sample, SampleBuffer *sample_buffer, intptr_t skip_count=0) |
|
bool | Append (uword pc, uword fp) |
|
| ValueObject () |
|
| ~ValueObject () |
|
Definition at line 1001 of file profiler.cc.
◆ ProfilerDartStackWalker()
Definition at line 1003 of file profiler.cc.
1013 ? thread->isolate()->main_port()
1015 sample,
1016 sample_buffer,
1017 skip_count),
1018 thread_(thread),
1019 pc_(
reinterpret_cast<uword*
>(pc)),
1020 fp_(
reinterpret_cast<uword*
>(
fp)),
1021 sp_(
reinterpret_cast<uword*
>(sp)),
1022 lr_(
reinterpret_cast<uword*
>(lr)) {}
ProfilerStackWalker(Dart_Port port_id, Sample *head_sample, SampleBuffer *sample_buffer, intptr_t skip_count=0)
◆ walk()
void dart::ProfilerDartStackWalker::walk |
( |
| ) |
|
|
inline |
Definition at line 1024 of file profiler.cc.
1024 {
1028 return;
1029 }
1030
1032 bool has_exit_frame = exit_fp != nullptr;
1033 if (has_exit_frame) {
1034
1035 pc_ = nullptr;
1036 fp_ = exit_fp;
1037
1038
1039 pc_ = CallerPC();
1040 fp_ = CallerFP();
1041 } else {
1042 if (thread_->
vm_tag() == VMTag::kDartTagId) {
1043
1044
1045
1046 } else {
1047
1049 }
1050
1051 const bool is_entry_frame =
1052#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
1055#else
1057#endif
1058 if (is_entry_frame) {
1059
1060
1061
1062
1063
1064
1066 return;
1067 }
1068 }
1069
1071
1072 for (;;) {
1073
1075 pc_ = nullptr;
1076 fp_ = ExitLink();
1077 if (fp_ == nullptr) {
1078 break;
1079 }
1080
1081
1082 pc_ = CallerPC();
1083 fp_ = CallerFP();
1084
1085
1088 }
1089
1091 break;
1092 }
1093
1094 pc_ = CallerPC();
1095 fp_ = CallerFP();
1096 }
1097 }
#define RELEASE_ASSERT(cond)
bool IsDeoptimizing() const
bool Append(uword pc, uword fp)
void set_ignore_sample(bool ignore_sample)
void set_exit_frame_sample(bool exit_frame_sample)
static bool HasBeenInitialized()
static bool InInvocationStub(uword pc)
uword top_exit_frame_info() const
Isolate * isolate() const
The documentation for this class was generated from the following file: