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

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

Issue 742433002: Use ZoneVector instead of ZoneList in the graph builder. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@local_cleanup-operator-counts
Patch Set: Remove pesky space. Created 6 years, 1 month 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/control-builders.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/compiler.h" 7 #include "src/compiler.h"
8 #include "src/compiler/ast-loop-assignment-analyzer.h" 8 #include "src/compiler/ast-loop-assignment-analyzer.h"
9 #include "src/compiler/control-builders.h" 9 #include "src/compiler/control-builders.h"
10 #include "src/compiler/machine-operator.h" 10 #include "src/compiler/machine-operator.h"
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 388
389 void AstGraphBuilder::VisitVariableDeclaration(VariableDeclaration* decl) { 389 void AstGraphBuilder::VisitVariableDeclaration(VariableDeclaration* decl) {
390 Variable* variable = decl->proxy()->var(); 390 Variable* variable = decl->proxy()->var();
391 VariableMode mode = decl->mode(); 391 VariableMode mode = decl->mode();
392 bool hole_init = mode == CONST || mode == CONST_LEGACY || mode == LET; 392 bool hole_init = mode == CONST || mode == CONST_LEGACY || mode == LET;
393 switch (variable->location()) { 393 switch (variable->location()) {
394 case Variable::UNALLOCATED: { 394 case Variable::UNALLOCATED: {
395 Handle<Oddball> value = variable->binding_needs_init() 395 Handle<Oddball> value = variable->binding_needs_init()
396 ? isolate()->factory()->the_hole_value() 396 ? isolate()->factory()->the_hole_value()
397 : isolate()->factory()->undefined_value(); 397 : isolate()->factory()->undefined_value();
398 globals()->Add(variable->name(), zone()); 398 globals()->push_back(variable->name());
399 globals()->Add(value, zone()); 399 globals()->push_back(value);
400 break; 400 break;
401 } 401 }
402 case Variable::PARAMETER: 402 case Variable::PARAMETER:
403 case Variable::LOCAL: 403 case Variable::LOCAL:
404 if (hole_init) { 404 if (hole_init) {
405 Node* value = jsgraph()->TheHoleConstant(); 405 Node* value = jsgraph()->TheHoleConstant();
406 environment()->Bind(variable, value); 406 environment()->Bind(variable, value);
407 } 407 }
408 break; 408 break;
409 case Variable::CONTEXT: 409 case Variable::CONTEXT:
(...skipping 10 matching lines...) Expand all
420 420
421 421
422 void AstGraphBuilder::VisitFunctionDeclaration(FunctionDeclaration* decl) { 422 void AstGraphBuilder::VisitFunctionDeclaration(FunctionDeclaration* decl) {
423 Variable* variable = decl->proxy()->var(); 423 Variable* variable = decl->proxy()->var();
424 switch (variable->location()) { 424 switch (variable->location()) {
425 case Variable::UNALLOCATED: { 425 case Variable::UNALLOCATED: {
426 Handle<SharedFunctionInfo> function = 426 Handle<SharedFunctionInfo> function =
427 Compiler::BuildFunctionInfo(decl->fun(), info()->script(), info()); 427 Compiler::BuildFunctionInfo(decl->fun(), info()->script(), info());
428 // Check for stack-overflow exception. 428 // Check for stack-overflow exception.
429 if (function.is_null()) return SetStackOverflow(); 429 if (function.is_null()) return SetStackOverflow();
430 globals()->Add(variable->name(), zone()); 430 globals()->push_back(variable->name());
431 globals()->Add(function, zone()); 431 globals()->push_back(function);
432 break; 432 break;
433 } 433 }
434 case Variable::PARAMETER: 434 case Variable::PARAMETER:
435 case Variable::LOCAL: { 435 case Variable::LOCAL: {
436 VisitForValue(decl->fun()); 436 VisitForValue(decl->fun());
437 Node* value = environment()->Pop(); 437 Node* value = environment()->Pop();
438 environment()->Bind(variable, value); 438 environment()->Bind(variable, value);
439 break; 439 break;
440 } 440 }
441 case Variable::CONTEXT: { 441 case Variable::CONTEXT: {
(...skipping 1190 matching lines...) Expand 10 before | Expand all | Expand 10 after
1632 1632
1633 void AstGraphBuilder::VisitSuperReference(SuperReference* expr) { 1633 void AstGraphBuilder::VisitSuperReference(SuperReference* expr) {
1634 UNREACHABLE(); 1634 UNREACHABLE();
1635 } 1635 }
1636 1636
1637 1637
1638 void AstGraphBuilder::VisitCaseClause(CaseClause* expr) { UNREACHABLE(); } 1638 void AstGraphBuilder::VisitCaseClause(CaseClause* expr) { UNREACHABLE(); }
1639 1639
1640 1640
1641 void AstGraphBuilder::VisitDeclarations(ZoneList<Declaration*>* declarations) { 1641 void AstGraphBuilder::VisitDeclarations(ZoneList<Declaration*>* declarations) {
1642 DCHECK(globals()->is_empty()); 1642 DCHECK(globals()->empty());
1643 AstVisitor::VisitDeclarations(declarations); 1643 AstVisitor::VisitDeclarations(declarations);
1644 if (globals()->is_empty()) return; 1644 if (globals()->empty()) return;
1645 Handle<FixedArray> data = 1645 int array_index = 0;
1646 isolate()->factory()->NewFixedArray(globals()->length(), TENURED); 1646 Handle<FixedArray> data = isolate()->factory()->NewFixedArray(
1647 for (int i = 0; i < globals()->length(); ++i) data->set(i, *globals()->at(i)); 1647 static_cast<int>(globals()->size()), TENURED);
1648 for (Handle<Object> obj : *globals()) data->set(array_index++, *obj);
1648 int encoded_flags = DeclareGlobalsEvalFlag::encode(info()->is_eval()) | 1649 int encoded_flags = DeclareGlobalsEvalFlag::encode(info()->is_eval()) |
1649 DeclareGlobalsNativeFlag::encode(info()->is_native()) | 1650 DeclareGlobalsNativeFlag::encode(info()->is_native()) |
1650 DeclareGlobalsStrictMode::encode(strict_mode()); 1651 DeclareGlobalsStrictMode::encode(strict_mode());
1651 Node* flags = jsgraph()->Constant(encoded_flags); 1652 Node* flags = jsgraph()->Constant(encoded_flags);
1652 Node* pairs = jsgraph()->Constant(data); 1653 Node* pairs = jsgraph()->Constant(data);
1653 const Operator* op = javascript()->CallRuntime(Runtime::kDeclareGlobals, 3); 1654 const Operator* op = javascript()->CallRuntime(Runtime::kDeclareGlobals, 3);
1654 NewNode(op, current_context(), pairs, flags); 1655 NewNode(op, current_context(), pairs, flags);
1655 globals()->Rewind(0); 1656 globals()->clear();
1656 } 1657 }
1657 1658
1658 1659
1659 void AstGraphBuilder::VisitIfNotNull(Statement* stmt) { 1660 void AstGraphBuilder::VisitIfNotNull(Statement* stmt) {
1660 if (stmt == NULL) return; 1661 if (stmt == NULL) return;
1661 Visit(stmt); 1662 Visit(stmt);
1662 } 1663 }
1663 1664
1664 1665
1665 void AstGraphBuilder::VisitIterationBody(IterationStatement* stmt, 1666 void AstGraphBuilder::VisitIterationBody(IterationStatement* stmt,
(...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after
2227 2228
2228 BitVector* AstGraphBuilder::GetVariablesAssignedInLoop( 2229 BitVector* AstGraphBuilder::GetVariablesAssignedInLoop(
2229 IterationStatement* stmt) { 2230 IterationStatement* stmt) {
2230 if (loop_assignment_analysis_ == NULL) return NULL; 2231 if (loop_assignment_analysis_ == NULL) return NULL;
2231 return loop_assignment_analysis_->GetVariablesAssignedInLoop(stmt); 2232 return loop_assignment_analysis_->GetVariablesAssignedInLoop(stmt);
2232 } 2233 }
2233 2234
2234 } // namespace compiler 2235 } // namespace compiler
2235 } // namespace internal 2236 } // namespace internal
2236 } // namespace v8 2237 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/ast-graph-builder.h ('k') | src/compiler/control-builders.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698