Index: src/runtime/runtime-compiler.cc |
diff --git a/src/runtime/runtime-compiler.cc b/src/runtime/runtime-compiler.cc |
index 97fa0d02e8aafaaf8ce6cb8cecc352f0caebb218..89a6fa15d243f2ba3b8dd62ff7206220afa3cbe0 100644 |
--- a/src/runtime/runtime-compiler.cc |
+++ b/src/runtime/runtime-compiler.cc |
@@ -122,10 +122,6 @@ RUNTIME_FUNCTION(Runtime_NotifyDeoptimized) { |
deoptimizer->MaterializeHeapObjects(&it); |
delete deoptimizer; |
- JavaScriptFrame* frame = it.frame(); |
- RUNTIME_ASSERT(frame->function()->IsJSFunction()); |
- DCHECK(frame->function() == *function); |
- |
// Ensure the context register is updated for materialized objects. |
JavaScriptFrameIterator top_it(isolate); |
JavaScriptFrame* top_frame = top_it.frame(); |
@@ -135,7 +131,10 @@ RUNTIME_FUNCTION(Runtime_NotifyDeoptimized) { |
return isolate->heap()->undefined_value(); |
} |
- // Search for other activations of the same function and code. |
+ // Search for other activations of the same optimized code. |
+ // At this point {it} is at the topmost frame of all the frames materialized |
+ // by the deoptimizer. Note that this frame does not necessarily represent |
+ // an activation of {function} because of potential inlined tail-calls. |
ActivationsFinder activations_finder(*optimized_code); |
activations_finder.VisitFrames(&it); |
isolate->thread_manager()->IterateArchivedThreads(&activations_finder); |