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 |