| Index: src/deoptimizer.cc
|
| diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc
|
| index 0c9760e0fa09c4b44e50a21a75eed5b09accb3ca..9a1bb9d8efb97e2193051079321f3b59d9219444 100644
|
| --- a/src/deoptimizer.cc
|
| +++ b/src/deoptimizer.cc
|
| @@ -2338,85 +2338,6 @@ void Deoptimizer::DoTranslateCommand(TranslationIterator* iterator,
|
| }
|
|
|
|
|
| -void Deoptimizer::PatchInterruptCode(Isolate* isolate,
|
| - Code* unoptimized) {
|
| - DisallowHeapAllocation no_gc;
|
| - Code* replacement_code =
|
| - isolate->builtins()->builtin(Builtins::kOnStackReplacement);
|
| -
|
| - // Iterate over the back edge table and patch every interrupt
|
| - // call to an unconditional call to the replacement code.
|
| - int loop_nesting_level = unoptimized->allow_osr_at_loop_nesting_level();
|
| -
|
| - for (FullCodeGenerator::BackEdgeTableIterator back_edges(unoptimized, &no_gc);
|
| - !back_edges.Done();
|
| - back_edges.Next()) {
|
| - if (static_cast<int>(back_edges.loop_depth()) == loop_nesting_level) {
|
| - ASSERT_EQ(NOT_PATCHED, GetInterruptPatchState(isolate,
|
| - unoptimized,
|
| - back_edges.pc()));
|
| - PatchInterruptCodeAt(unoptimized,
|
| - back_edges.pc(),
|
| - replacement_code);
|
| - }
|
| - }
|
| -
|
| - unoptimized->set_back_edges_patched_for_osr(true);
|
| - ASSERT(Deoptimizer::VerifyInterruptCode(
|
| - isolate, unoptimized, loop_nesting_level));
|
| -}
|
| -
|
| -
|
| -void Deoptimizer::RevertInterruptCode(Isolate* isolate,
|
| - Code* unoptimized) {
|
| - DisallowHeapAllocation no_gc;
|
| - Code* interrupt_code =
|
| - isolate->builtins()->builtin(Builtins::kInterruptCheck);
|
| -
|
| - // Iterate over the back edge table and revert the patched interrupt calls.
|
| - ASSERT(unoptimized->back_edges_patched_for_osr());
|
| - int loop_nesting_level = unoptimized->allow_osr_at_loop_nesting_level();
|
| -
|
| - for (FullCodeGenerator::BackEdgeTableIterator back_edges(unoptimized, &no_gc);
|
| - !back_edges.Done();
|
| - back_edges.Next()) {
|
| - if (static_cast<int>(back_edges.loop_depth()) <= loop_nesting_level) {
|
| - ASSERT_EQ(PATCHED_FOR_OSR, GetInterruptPatchState(isolate,
|
| - unoptimized,
|
| - back_edges.pc()));
|
| - RevertInterruptCodeAt(unoptimized, back_edges.pc(), interrupt_code);
|
| - }
|
| - }
|
| -
|
| - unoptimized->set_back_edges_patched_for_osr(false);
|
| - unoptimized->set_allow_osr_at_loop_nesting_level(0);
|
| - // Assert that none of the back edges are patched anymore.
|
| - ASSERT(Deoptimizer::VerifyInterruptCode(isolate, unoptimized, -1));
|
| -}
|
| -
|
| -
|
| -#ifdef DEBUG
|
| -bool Deoptimizer::VerifyInterruptCode(Isolate* isolate,
|
| - Code* unoptimized,
|
| - int loop_nesting_level) {
|
| - DisallowHeapAllocation no_gc;
|
| - for (FullCodeGenerator::BackEdgeTableIterator back_edges(unoptimized, &no_gc);
|
| - !back_edges.Done();
|
| - back_edges.Next()) {
|
| - uint32_t loop_depth = back_edges.loop_depth();
|
| - CHECK_LE(static_cast<int>(loop_depth), Code::kMaxLoopNestingMarker);
|
| - // Assert that all back edges for shallower loops (and only those)
|
| - // have already been patched.
|
| - CHECK_EQ((static_cast<int>(loop_depth) <= loop_nesting_level),
|
| - GetInterruptPatchState(isolate,
|
| - unoptimized,
|
| - back_edges.pc()) != NOT_PATCHED);
|
| - }
|
| - return true;
|
| -}
|
| -#endif // DEBUG
|
| -
|
| -
|
| unsigned Deoptimizer::ComputeInputFrameSize() const {
|
| unsigned fixed_size = ComputeFixedSize(function_);
|
| // The fp-to-sp delta already takes the context and the function
|
|
|