|
| ProfilerNativeStackWalker (ProfilerCounters *counters, Dart_Port port_id, Sample *sample, SampleBuffer *sample_buffer, uword stack_lower, uword stack_upper, uword pc, uword fp, uword sp, 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 217 of file profiler.cc.
◆ ProfilerNativeStackWalker()
Definition at line 219 of file profiler.cc.
230 counters_(counters),
231 stack_upper_(stack_upper),
232 original_pc_(pc),
234 original_sp_(sp),
235 lower_bound_(stack_lower) {}
ProfilerStackWalker(Dart_Port port_id, Sample *head_sample, SampleBuffer *sample_buffer, intptr_t skip_count=0)
◆ walk()
void dart::ProfilerNativeStackWalker::walk |
( |
| ) |
|
|
inline |
Definition at line 237 of file profiler.cc.
237 {
238 Append(original_pc_, original_fp_);
239
240 uword* pc =
reinterpret_cast<uword*
>(original_pc_);
243
244 if (!ValidFramePointer(
fp)) {
245 counters_->incomplete_sample_fp_bounds.fetch_add(1);
246 return;
247 }
248
249 while (true) {
253
255 return;
256 }
257
258 if (
fp <= previous_fp) {
259
260 counters_->incomplete_sample_fp_step.fetch_add(1);
261 return;
262 }
263
264 if (!ValidFramePointer(
fp)) {
265
266 counters_->incomplete_sample_fp_bounds.fetch_add(1);
267 return;
268 }
269
270 const uword pc_value =
reinterpret_cast<uword>(pc);
271 if ((pc_value + 1) < pc_value) {
272
273
274
275
276
277 counters_->incomplete_sample_bad_pc.fetch_add(1);
278 return;
279 }
280
281
282 lower_bound_ =
reinterpret_cast<uword>(
fp);
283
285 return;
286 }
287 }
288 }
bool Append(uword pc, uword fp)
The documentation for this class was generated from the following file: