Index: runtime/vm/isolate.cc |
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc |
index b473061aadc884ff94fc990da3ccb0d03c245284..4415edf1d78a586090491cbefba4bba680867791 100644 |
--- a/runtime/vm/isolate.cc |
+++ b/runtime/vm/isolate.cc |
@@ -1945,14 +1945,15 @@ uword Isolate::FindPendingDeopt(uword fp) const { |
return (*pending_deopts_)[i].pc(); |
} |
} |
- FATAL("Missing pending deopt entry"); |
+ FATAL1("Missing pending deopt entry for fp=%" Pp "", fp); |
return 0; |
} |
void Isolate::ClearPendingDeoptsAtOrBelow(uword fp) const { |
for (intptr_t i = pending_deopts_->length() - 1; i >= 0; i--) { |
- if ((*pending_deopts_)[i].fp() <= fp) { |
+ uword deopt_fp = (*pending_deopts_)[i].fp(); |
+ if ((fp == deopt_fp) || IsCalleeFrameOf(fp, deopt_fp)) { |
pending_deopts_->RemoveAt(i); |
} |
} |