Index: src/profiler/profile-generator.cc |
diff --git a/src/profiler/profile-generator.cc b/src/profiler/profile-generator.cc |
index 5e9da159586ea64925cf2644a4349620ebbb03b8..a4da7cae7f320400aa366a5084c497674ee45e35 100644 |
--- a/src/profiler/profile-generator.cc |
+++ b/src/profiler/profile-generator.cc |
@@ -181,17 +181,18 @@ CpuProfileDeoptInfo CodeEntry::GetDeoptInfo() { |
CpuProfileDeoptInfo info; |
info.deopt_reason = deopt_reason_; |
DCHECK_NE(kNoDeoptimizationId, deopt_id_); |
+ size_t position = static_cast<size_t>(deopt_position_.ScriptOffset()); |
if (deopt_inlined_frames_.find(deopt_id_) == deopt_inlined_frames_.end()) { |
- info.stack.push_back(CpuProfileDeoptFrame( |
- {script_id_, position_ + deopt_position_.position()})); |
+ info.stack.push_back(CpuProfileDeoptFrame({script_id_, position})); |
} else { |
- size_t deopt_position = deopt_position_.raw(); |
// Copy stack of inlined frames where the deopt happened. |
std::vector<DeoptInlinedFrame>& frames = deopt_inlined_frames_[deopt_id_]; |
+ bool first = true; |
for (DeoptInlinedFrame& inlined_frame : base::Reversed(frames)) { |
- info.stack.push_back(CpuProfileDeoptFrame( |
- {inlined_frame.script_id, deopt_position + inlined_frame.position})); |
- deopt_position = 0; // Done with innermost frame. |
+ info.stack.push_back( |
+ CpuProfileDeoptFrame({inlined_frame.script_id, |
+ first ? position : inlined_frame.position})); |
+ first = false; // Done with innermost frame. |
} |
} |
return info; |