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.