| Index: runtime/vm/stack_frame.cc
|
| diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc
|
| index 76b4370419c6ea496a21d1d34925d92894478a51..7c1e5e74f2b643dfa3423a60217d2cdfcdded829 100644
|
| --- a/runtime/vm/stack_frame.cc
|
| +++ b/runtime/vm/stack_frame.cc
|
| @@ -365,6 +365,7 @@ EntryFrame* StackFrameIterator::NextEntryFrame() {
|
|
|
| InlinedFunctionsIterator::InlinedFunctionsIterator(const Code& code, uword pc)
|
| : index_(0),
|
| + num_materializations_(0),
|
| code_(Code::Handle(code.raw())),
|
| deopt_info_(DeoptInfo::Handle()),
|
| function_(Function::Handle()),
|
| @@ -386,6 +387,7 @@ InlinedFunctionsIterator::InlinedFunctionsIterator(const Code& code, uword pc)
|
| const Array& deopt_table = Array::Handle(code_.deopt_info_array());
|
| ASSERT(!deopt_table.IsNull());
|
| deopt_info_.ToInstructions(deopt_table, &deopt_instructions_);
|
| + num_materializations_ = deopt_info_.NumMaterializations();
|
| object_table_ = code_.object_table();
|
| Advance();
|
| }
|
| @@ -426,7 +428,7 @@ intptr_t InlinedFunctionsIterator::GetDeoptFpOffset() const {
|
| index++) {
|
| DeoptInstr* deopt_instr = deopt_instructions_[index];
|
| if (deopt_instr->kind() == DeoptInstr::kCallerFp) {
|
| - return index;
|
| + return (index - num_materializations_);
|
| }
|
| }
|
| UNREACHABLE();
|
|
|