| 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);
|
|
|