Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Side by Side Diff: src/compiler/ast-graph-builder.cc

Issue 2142233003: Templatize AstVisitor with its subclass (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/ast-graph-builder.h ('k') | src/compiler/ast-loop-assignment-analyzer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/ast-graph-builder.h" 5 #include "src/compiler/ast-graph-builder.h"
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 #include "src/compiler.h" 8 #include "src/compiler.h"
9 #include "src/compiler/ast-loop-assignment-analyzer.h" 9 #include "src/compiler/ast-loop-assignment-analyzer.h"
10 #include "src/compiler/control-builders.h" 10 #include "src/compiler/control-builders.h"
(...skipping 1094 matching lines...) Expand 10 before | Expand all | Expand 10 after
1105 void AstGraphBuilder::VisitForValues(ZoneList<Expression*>* exprs) { 1105 void AstGraphBuilder::VisitForValues(ZoneList<Expression*>* exprs) {
1106 for (int i = 0; i < exprs->length(); ++i) { 1106 for (int i = 0; i < exprs->length(); ++i) {
1107 VisitForValue(exprs->at(i)); 1107 VisitForValue(exprs->at(i));
1108 } 1108 }
1109 } 1109 }
1110 1110
1111 1111
1112 void AstGraphBuilder::VisitForValue(Expression* expr) { 1112 void AstGraphBuilder::VisitForValue(Expression* expr) {
1113 AstValueContext for_value(this); 1113 AstValueContext for_value(this);
1114 if (!CheckStackOverflow()) { 1114 if (!CheckStackOverflow()) {
1115 expr->Accept(this); 1115 AstVisitor<AstGraphBuilder>::Visit(expr);
1116 } else { 1116 } else {
1117 ast_context()->ProduceValue(expr, jsgraph()->UndefinedConstant()); 1117 ast_context()->ProduceValue(expr, jsgraph()->UndefinedConstant());
1118 } 1118 }
1119 } 1119 }
1120 1120
1121 1121
1122 void AstGraphBuilder::VisitForEffect(Expression* expr) { 1122 void AstGraphBuilder::VisitForEffect(Expression* expr) {
1123 AstEffectContext for_effect(this); 1123 AstEffectContext for_effect(this);
1124 if (!CheckStackOverflow()) { 1124 if (!CheckStackOverflow()) {
1125 expr->Accept(this); 1125 AstVisitor<AstGraphBuilder>::Visit(expr);
1126 } else { 1126 } else {
1127 ast_context()->ProduceValue(expr, jsgraph()->UndefinedConstant()); 1127 ast_context()->ProduceValue(expr, jsgraph()->UndefinedConstant());
1128 } 1128 }
1129 } 1129 }
1130 1130
1131 1131
1132 void AstGraphBuilder::VisitForTest(Expression* expr) { 1132 void AstGraphBuilder::VisitForTest(Expression* expr) {
1133 AstTestContext for_condition(this, expr->test_id()); 1133 AstTestContext for_condition(this, expr->test_id());
1134 if (!CheckStackOverflow()) { 1134 if (!CheckStackOverflow()) {
1135 expr->Accept(this); 1135 AstVisitor<AstGraphBuilder>::Visit(expr);
1136 } else { 1136 } else {
1137 ast_context()->ProduceValue(expr, jsgraph()->UndefinedConstant()); 1137 ast_context()->ProduceValue(expr, jsgraph()->UndefinedConstant());
1138 } 1138 }
1139 } 1139 }
1140 1140
1141 1141
1142 void AstGraphBuilder::Visit(Expression* expr) { 1142 void AstGraphBuilder::Visit(Expression* expr) {
1143 // Reuses enclosing AstContext. 1143 // Reuses enclosing AstContext.
1144 if (!CheckStackOverflow()) { 1144 if (!CheckStackOverflow()) {
1145 expr->Accept(this); 1145 AstVisitor<AstGraphBuilder>::Visit(expr);
1146 } else { 1146 } else {
1147 ast_context()->ProduceValue(expr, jsgraph()->UndefinedConstant()); 1147 ast_context()->ProduceValue(expr, jsgraph()->UndefinedConstant());
1148 } 1148 }
1149 } 1149 }
1150 1150
1151 1151
1152 void AstGraphBuilder::VisitVariableDeclaration(VariableDeclaration* decl) { 1152 void AstGraphBuilder::VisitVariableDeclaration(VariableDeclaration* decl) {
1153 Variable* variable = decl->proxy()->var(); 1153 Variable* variable = decl->proxy()->var();
1154 VariableMode mode = decl->mode(); 1154 VariableMode mode = decl->mode();
1155 bool hole_init = mode == CONST || mode == LET; 1155 bool hole_init = mode == CONST || mode == LET;
(...skipping 1819 matching lines...) Expand 10 before | Expand all | Expand 10 after
2975 2975
2976 2976
2977 void AstGraphBuilder::VisitCaseClause(CaseClause* expr) { 2977 void AstGraphBuilder::VisitCaseClause(CaseClause* expr) {
2978 // Handled entirely in VisitSwitch. 2978 // Handled entirely in VisitSwitch.
2979 UNREACHABLE(); 2979 UNREACHABLE();
2980 } 2980 }
2981 2981
2982 2982
2983 void AstGraphBuilder::VisitDeclarations(ZoneList<Declaration*>* declarations) { 2983 void AstGraphBuilder::VisitDeclarations(ZoneList<Declaration*>* declarations) {
2984 DCHECK(globals()->empty()); 2984 DCHECK(globals()->empty());
2985 AstVisitor::VisitDeclarations(declarations); 2985 AstVisitor<AstGraphBuilder>::VisitDeclarations(declarations);
2986 if (globals()->empty()) return; 2986 if (globals()->empty()) return;
2987 int array_index = 0; 2987 int array_index = 0;
2988 Handle<TypeFeedbackVector> feedback_vector( 2988 Handle<TypeFeedbackVector> feedback_vector(
2989 info()->closure()->feedback_vector()); 2989 info()->closure()->feedback_vector());
2990 Handle<FixedArray> data = isolate()->factory()->NewFixedArray( 2990 Handle<FixedArray> data = isolate()->factory()->NewFixedArray(
2991 static_cast<int>(globals()->size()), TENURED); 2991 static_cast<int>(globals()->size()), TENURED);
2992 for (Handle<Object> obj : *globals()) data->set(array_index++, *obj); 2992 for (Handle<Object> obj : *globals()) data->set(array_index++, *obj);
2993 int encoded_flags = info()->GetDeclareGlobalsFlags(); 2993 int encoded_flags = info()->GetDeclareGlobalsFlags();
2994 Node* flags = jsgraph()->Constant(encoded_flags); 2994 Node* flags = jsgraph()->Constant(encoded_flags);
2995 Node* pairs = jsgraph()->Constant(data); 2995 Node* pairs = jsgraph()->Constant(data);
(...skipping 1420 matching lines...) Expand 10 before | Expand all | Expand 10 after
4416 // Phi does not exist yet, introduce one. 4416 // Phi does not exist yet, introduce one.
4417 value = NewPhi(inputs, value, control); 4417 value = NewPhi(inputs, value, control);
4418 value->ReplaceInput(inputs - 1, other); 4418 value->ReplaceInput(inputs - 1, other);
4419 } 4419 }
4420 return value; 4420 return value;
4421 } 4421 }
4422 4422
4423 } // namespace compiler 4423 } // namespace compiler
4424 } // namespace internal 4424 } // namespace internal
4425 } // namespace v8 4425 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/ast-graph-builder.h ('k') | src/compiler/ast-loop-assignment-analyzer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698