Index: src/cpu-profiler.cc |
diff --git a/src/cpu-profiler.cc b/src/cpu-profiler.cc |
index 3d9dc6780b2aefac2f45ae619281ccbf5c036d3c..94677c10e260ca9d583962e6396b9390ed4b0c9a 100644 |
--- a/src/cpu-profiler.cc |
+++ b/src/cpu-profiler.cc |
@@ -64,14 +64,15 @@ void ProfilerEventsProcessor::Enqueue(const CodeEventsContainer& event) { |
void ProfilerEventsProcessor::AddCurrentStack(Isolate* isolate) { |
TickSampleEventRecord record(last_code_event_id_); |
- TickSample* sample = &record.sample; |
- sample->state = isolate->current_vm_state(); |
- sample->pc = reinterpret_cast<Address>(sample); // Not NULL. |
- for (StackTraceFrameIterator it(isolate); |
- !it.done() && sample->frames_count < TickSample::kMaxFramesCount; |
- it.Advance()) { |
- sample->stack[sample->frames_count++] = it.frame()->pc(); |
+ RegisterState regs; |
+ StackFrameIterator it(isolate); |
+ if (!it.done()) { |
+ StackFrame* frame = it.frame(); |
+ regs.sp = frame->sp(); |
+ regs.fp = frame->fp(); |
+ regs.pc = frame->pc(); |
} |
+ record.sample.Init(isolate, regs); |
ticks_from_vm_buffer_.Enqueue(record); |
} |