Reviewers: rossberg,

Message:
PTAL. Since we lost a huge part of test coverage for TurboFan anyways, there is
no need to maintain this confusing distinction between DisableCrankshaft and
DisableTurbofan any longer. The syncing between pipeline.cc and ast-numbering.cc has been broken at several occasions already and I don't want to maintain it any longer. We will need to find a more intuitive way to switch between these two
parts of the pipeline.

Description:
Remove distinction between DisableTurbofan and DisableCrankshaft.

[email protected]

Please review this at https://codereview.chromium.org/826833004/

Base URL: https://chromium.googlesource.com/v8/v8.git@master

Affected files (+32, -54 lines):
  M src/ast-numbering.cc
  M src/compiler/pipeline.cc


Index: src/ast-numbering.cc
diff --git a/src/ast-numbering.cc b/src/ast-numbering.cc
index f9144bcb8cefbe557b9566f2582c09b1c3cc268a..70ba5cb0370f6d2835069d0959d6d77af625c03f 100644
--- a/src/ast-numbering.cc
+++ b/src/ast-numbering.cc
@@ -18,8 +18,7 @@ class AstNumberingVisitor FINAL : public AstVisitor {
   explicit AstNumberingVisitor(Zone* zone)
       : AstVisitor(),
         next_id_(BailoutId::FirstUsable().ToInt()),
-        dont_crankshaft_reason_(kNoReason),
-        dont_turbofan_reason_(kNoReason) {
+        dont_optimize_reason_(kNoReason) {
     InitializeAstVisitor(zone);
   }

@@ -45,23 +44,15 @@ class AstNumberingVisitor FINAL : public AstVisitor {
   }

   void IncrementNodeCount() { properties_.add_node_count(1); }
-  void DisableCrankshaft(BailoutReason reason) {
-    dont_crankshaft_reason_ = reason;
-    DisableSelfOptimization();
-  }
-  // TODO(turbofan): Remove the dont_turbofan_reason once no nodes are
-  // DisableTurbofan.  That set of nodes must be kept in sync with
-  // Pipeline::GenerateCode.
-  void DisableTurbofan(BailoutReason reason) {
-    dont_crankshaft_reason_ = reason;
-    dont_turbofan_reason_ = reason;
-    DisableSelfOptimization();
-  }
   void DisableSelfOptimization() {
     properties_.flags()->Add(kDontSelfOptimize);
   }
+  void DisableOptimization(BailoutReason reason) {
+    dont_optimize_reason_ = reason;
+    DisableSelfOptimization();
+  }
   void DisableCaching(BailoutReason reason) {
-    dont_crankshaft_reason_ = reason;
+    dont_optimize_reason_ = reason;
     DisableSelfOptimization();
     properties_.flags()->Add(kDontCache);
   }
@@ -86,15 +77,11 @@ class AstNumberingVisitor FINAL : public AstVisitor {
     }
   }

-  BailoutReason dont_optimize_reason() const {
-    return (dont_turbofan_reason_ != kNoReason) ? dont_turbofan_reason_
-                                                : dont_crankshaft_reason_;
-  }
+ BailoutReason dont_optimize_reason() const { return dont_optimize_reason_; }

   int next_id_;
   AstProperties properties_;
-  BailoutReason dont_crankshaft_reason_;
-  BailoutReason dont_turbofan_reason_;
+  BailoutReason dont_optimize_reason_;

   DEFINE_AST_VISITOR_SUBCLASS_MEMBERS();
   DISALLOW_COPY_AND_ASSIGN(AstNumberingVisitor);
@@ -109,14 +96,14 @@ void AstNumberingVisitor::VisitVariableDeclaration(VariableDeclaration* node) {

 void AstNumberingVisitor::VisitExportDeclaration(ExportDeclaration* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kExportDeclaration);
+  DisableOptimization(kExportDeclaration);
   VisitVariableProxy(node->proxy());
 }


 void AstNumberingVisitor::VisitModuleUrl(ModuleUrl* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kModuleUrl);
+  DisableOptimization(kModuleUrl);
 }


@@ -137,7 +124,7 @@ void AstNumberingVisitor::VisitBreakStatement(BreakStatement* node) {

 void AstNumberingVisitor::VisitDebuggerStatement(DebuggerStatement* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kDebuggerStatement);
+  DisableOptimization(kDebuggerStatement);
   node->set_base_id(ReserveIdRange(DebuggerStatement::num_ids()));
 }

@@ -145,7 +132,7 @@ void AstNumberingVisitor::VisitDebuggerStatement(DebuggerStatement* node) {
 void AstNumberingVisitor::VisitNativeFunctionLiteral(
     NativeFunctionLiteral* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kNativeFunctionLiteral);
+  DisableOptimization(kNativeFunctionLiteral);
   node->set_base_id(ReserveIdRange(NativeFunctionLiteral::num_ids()));
 }

@@ -165,7 +152,7 @@ void AstNumberingVisitor::VisitRegExpLiteral(RegExpLiteral* node) {
 void AstNumberingVisitor::VisitVariableProxy(VariableProxy* node) {
   IncrementNodeCount();
   if (node->var()->IsLookupSlot()) {
-    DisableCrankshaft(kReferenceToAVariableWhichRequiresDynamicLookup);
+    DisableOptimization(kReferenceToAVariableWhichRequiresDynamicLookup);
   }
   ReserveFeedbackSlots(node);
   node->set_base_id(ReserveIdRange(VariableProxy::num_ids()));
@@ -180,7 +167,7 @@ void AstNumberingVisitor::VisitThisFunction(ThisFunction* node) {

 void AstNumberingVisitor::VisitSuperReference(SuperReference* node) {
   IncrementNodeCount();
-  DisableTurbofan(kSuperReference);
+  DisableOptimization(kSuperReference);
   ReserveFeedbackSlots(node);
   node->set_base_id(ReserveIdRange(SuperReference::num_ids()));
   Visit(node->this_var());
@@ -189,7 +176,7 @@ void AstNumberingVisitor::VisitSuperReference(SuperReference* node) {

 void AstNumberingVisitor::VisitModuleDeclaration(ModuleDeclaration* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kModuleDeclaration);
+  DisableOptimization(kModuleDeclaration);
   VisitVariableProxy(node->proxy());
   Visit(node->module());
 }
@@ -197,7 +184,7 @@ void AstNumberingVisitor::VisitModuleDeclaration(ModuleDeclaration* node) {

 void AstNumberingVisitor::VisitImportDeclaration(ImportDeclaration* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kImportDeclaration);
+  DisableOptimization(kImportDeclaration);
   VisitVariableProxy(node->proxy());
   Visit(node->module());
 }
@@ -205,21 +192,21 @@ void AstNumberingVisitor::VisitImportDeclaration(ImportDeclaration* node) {

 void AstNumberingVisitor::VisitModuleVariable(ModuleVariable* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kModuleVariable);
+  DisableOptimization(kModuleVariable);
   Visit(node->proxy());
 }


 void AstNumberingVisitor::VisitModulePath(ModulePath* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kModulePath);
+  DisableOptimization(kModulePath);
   Visit(node->module());
 }


 void AstNumberingVisitor::VisitModuleStatement(ModuleStatement* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kModuleStatement);
+  DisableOptimization(kModuleStatement);
   Visit(node->body());
 }

@@ -238,7 +225,7 @@ void AstNumberingVisitor::VisitReturnStatement(ReturnStatement* node) {

 void AstNumberingVisitor::VisitYield(Yield* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kYield);
+  DisableOptimization(kYield);
   ReserveFeedbackSlots(node);
   node->set_base_id(ReserveIdRange(Yield::num_ids()));
   Visit(node->generator_object());
@@ -294,7 +281,7 @@ void AstNumberingVisitor::VisitCallRuntime(CallRuntime* node) {
   ReserveFeedbackSlots(node);
   if (node->is_jsruntime()) {
     // Don't try to optimize JS runtime calls because we bailout on them.
-    DisableCrankshaft(kCallToAJavaScriptRuntimeFunction);
+    DisableOptimization(kCallToAJavaScriptRuntimeFunction);
   }
   node->set_base_id(ReserveIdRange(CallRuntime::num_ids()));
   VisitArguments(node->arguments());
@@ -303,7 +290,7 @@ void AstNumberingVisitor::VisitCallRuntime(CallRuntime* node) {

 void AstNumberingVisitor::VisitWithStatement(WithStatement* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kWithStatement);
+  DisableOptimization(kWithStatement);
   Visit(node->expression());
   Visit(node->statement());
 }
@@ -329,7 +316,7 @@ void AstNumberingVisitor::VisitWhileStatement(WhileStatement* node) {

 void AstNumberingVisitor::VisitTryCatchStatement(TryCatchStatement* node) {
   IncrementNodeCount();
-  DisableTurbofan(kTryCatchStatement);
+  DisableOptimization(kTryCatchStatement);
   Visit(node->try_block());
   Visit(node->catch_block());
 }
@@ -337,7 +324,7 @@ void AstNumberingVisitor::VisitTryCatchStatement(TryCatchStatement* node) {

void AstNumberingVisitor::VisitTryFinallyStatement(TryFinallyStatement* node) {
   IncrementNodeCount();
-  DisableTurbofan(kTryFinallyStatement);
+  DisableOptimization(kTryFinallyStatement);
   Visit(node->try_block());
   Visit(node->finally_block());
 }
@@ -390,7 +377,7 @@ void AstNumberingVisitor::VisitForInStatement(ForInStatement* node) {

 void AstNumberingVisitor::VisitForOfStatement(ForOfStatement* node) {
   IncrementNodeCount();
-  DisableCrankshaft(kForOfStatement);
+  DisableOptimization(kForOfStatement);
   node->set_base_id(ReserveIdRange(ForOfStatement::num_ids()));
   Visit(node->assign_iterator());
   Visit(node->next_result());
@@ -452,7 +439,7 @@ void AstNumberingVisitor::VisitForStatement(ForStatement* node) {

 void AstNumberingVisitor::VisitClassLiteral(ClassLiteral* node) {
   IncrementNodeCount();
-  DisableTurbofan(kClassLiteral);
+  DisableOptimization(kClassLiteral);
   node->set_base_id(ReserveIdRange(ClassLiteral::num_ids()));
   if (node->extends()) Visit(node->extends());
   if (node->constructor()) Visit(node->constructor());
@@ -476,7 +463,7 @@ void AstNumberingVisitor::VisitObjectLiteral(ObjectLiteral* node) {

 void AstNumberingVisitor::VisitObjectLiteralProperty(
     ObjectLiteralProperty* node) {
-  if (node->is_computed_name()) DisableTurbofan(kComputedPropertyName);
+  if (node->is_computed_name()) DisableOptimization(kComputedPropertyName);
   Visit(node->key());
   Visit(node->value());
 }
@@ -552,12 +539,12 @@ bool AstNumberingVisitor::Renumber(FunctionLiteral* node) {

   if (scope->HasIllegalRedeclaration()) {
     scope->VisitIllegalRedeclaration(this);
-    DisableCrankshaft(kFunctionWithIllegalRedeclaration);
+    DisableOptimization(kFunctionWithIllegalRedeclaration);
     return Finish(node);
   }
-  if (scope->calls_eval()) DisableCrankshaft(kFunctionCallsEval);
+  if (scope->calls_eval()) DisableOptimization(kFunctionCallsEval);
if (scope->arguments() != NULL && !scope->arguments()->IsStackAllocated()) {
-    DisableCrankshaft(kContextAllocatedArguments);
+    DisableOptimization(kContextAllocatedArguments);
   }

   VisitDeclarations(scope->declarations());
Index: src/compiler/pipeline.cc
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc
index 082f11d7e2aee65b8ab369a2d0baac8f6f50e95a..70de7fb0efed28ef7d30f20680f018ad91fb7b9c 100644
--- a/src/compiler/pipeline.cc
+++ b/src/compiler/pipeline.cc
@@ -751,17 +751,8 @@ void Pipeline::RunPrintAndVerify(const char* phase, bool untyped) {


 Handle<Code> Pipeline::GenerateCode() {
- // This list must be kept in sync with DisableTurbofan in ast-numbering.cc.
-  if (info()->function()->dont_optimize_reason() == kTryCatchStatement ||
-      info()->function()->dont_optimize_reason() == kTryFinallyStatement ||
-      // TODO(turbofan): Make super work and remove this bailout.
-      info()->function()->dont_optimize_reason() == kSuperReference ||
-      // TODO(turbofan): Make class literals work and remove this bailout.
-      info()->function()->dont_optimize_reason() == kClassLiteral ||
- // TODO(turbofan): Make OSR work with inner loops and remove this bailout.
-      (info()->is_osr() && !FLAG_turbo_osr)) {
-    return Handle<Code>::null();
-  }
+ // TODO(turbofan): Make OSR work with inner loops and remove this bailout.
+  if (info()->is_osr() && !FLAG_turbo_osr) return Handle<Code>::null();

   ZonePool zone_pool(isolate());
   SmartPointer<PipelineStatistics> pipeline_statistics;


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to