Index: src/compiler/pipeline.cc |
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc |
index 66f3bf0fc4a1584d326bd5b4ea8d8ba34bee58f6..7ced8e67b261d83606059dbc4192dbdb6d4ada4a 100644 |
--- a/src/compiler/pipeline.cc |
+++ b/src/compiler/pipeline.cc |
@@ -26,7 +26,6 @@ |
#include "src/compiler/instruction-selector.h" |
#include "src/compiler/js-builtin-reducer.h" |
#include "src/compiler/js-context-specialization.h" |
-#include "src/compiler/js-frame-specialization.h" |
#include "src/compiler/js-generic-lowering.h" |
#include "src/compiler/js-inlining.h" |
#include "src/compiler/js-intrinsic-lowering.h" |
@@ -497,17 +496,12 @@ struct InliningPhase { |
CommonOperatorReducer common_reducer(&graph_reducer, data->graph(), |
data->common(), data->machine()); |
JSContextSpecializer context_specializer(&graph_reducer, data->jsgraph()); |
- JSFrameSpecialization frame_specialization(data->info()->osr_frame(), |
- data->jsgraph()); |
JSInliner inliner(&graph_reducer, data->info()->is_inlining_enabled() |
? JSInliner::kGeneralInlining |
: JSInliner::kRestrictedInlining, |
temp_zone, data->info(), data->jsgraph()); |
AddReducer(data, &graph_reducer, &dead_code_elimination); |
AddReducer(data, &graph_reducer, &common_reducer); |
- if (data->info()->is_frame_specializing()) { |
- AddReducer(data, &graph_reducer, &frame_specialization); |
- } |
if (data->info()->is_context_specializing()) { |
AddReducer(data, &graph_reducer, &context_specializer); |
} |
@@ -1041,12 +1035,6 @@ Handle<Code> Pipeline::GenerateCode() { |
if (data.compilation_failed()) return Handle<Code>::null(); |
RunPrintAndVerify("Initial untyped", true); |
- // Perform OSR deconstruction. |
- if (info()->is_osr()) { |
- Run<OsrDeconstructionPhase>(); |
- RunPrintAndVerify("OSR deconstruction", true); |
- } |
- |
// Perform context specialization and inlining (if enabled). |
Run<InliningPhase>(); |
RunPrintAndVerify("Inlined", true); |
@@ -1083,6 +1071,11 @@ Handle<Code> Pipeline::GenerateCode() { |
RunPrintAndVerify("Loop peeled"); |
} |
+ if (info()->is_osr()) { |
+ Run<OsrDeconstructionPhase>(); |
+ RunPrintAndVerify("OSR deconstruction"); |
+ } |
+ |
if (info()->is_type_feedback_enabled()) { |
Run<JSTypeFeedbackPhase>(); |
RunPrintAndVerify("JSType feedback"); |
@@ -1102,6 +1095,12 @@ Handle<Code> Pipeline::GenerateCode() { |
Run<ChangeLoweringPhase>(); |
// TODO(jarin, rossberg): Remove UNTYPED once machine typing works. |
RunPrintAndVerify("Lowered changes", true); |
+ } else { |
+ if (info()->is_osr()) { |
+ Run<OsrDeconstructionPhase>(); |
+ if (info()->bailout_reason() != kNoReason) return Handle<Code>::null(); |
+ RunPrintAndVerify("OSR deconstruction", true); |
+ } |
} |
// Lower any remaining generic JSOperators. |