OLD | NEW |
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 #ifndef V8_COMPILER_AST_GRAPH_BUILDER_H_ | 5 #ifndef V8_COMPILER_AST_GRAPH_BUILDER_H_ |
6 #define V8_COMPILER_AST_GRAPH_BUILDER_H_ | 6 #define V8_COMPILER_AST_GRAPH_BUILDER_H_ |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/ast.h" | 10 #include "src/ast.h" |
11 #include "src/compiler/graph-builder.h" | 11 #include "src/compiler/graph-builder.h" |
12 #include "src/compiler/js-graph.h" | 12 #include "src/compiler/js-graph.h" |
13 | 13 |
14 namespace v8 { | 14 namespace v8 { |
15 namespace internal { | 15 namespace internal { |
16 namespace compiler { | 16 namespace compiler { |
17 | 17 |
18 class ControlBuilder; | 18 class ControlBuilder; |
19 class Graph; | 19 class Graph; |
20 class LoopAssignmentAnalysis; | 20 class LoopAssignmentAnalysis; |
21 class LoopBuilder; | 21 class LoopBuilder; |
22 | 22 |
23 // The AstGraphBuilder produces a high-level IR graph, based on an | 23 // The AstGraphBuilder produces a high-level IR graph, based on an |
24 // underlying AST. The produced graph can either be compiled into a | 24 // underlying AST. The produced graph can either be compiled into a |
25 // stand-alone function or be wired into another graph for the purposes | 25 // stand-alone function or be wired into another graph for the purposes |
26 // of function inlining. | 26 // of function inlining. |
27 class AstGraphBuilder : public StructuredGraphBuilder, public AstVisitor { | 27 class AstGraphBuilder : public StructuredGraphBuilder, public AstVisitor { |
28 public: | 28 public: |
29 AstGraphBuilder(Zone* local_zone, CompilationInfo* info, JSGraph* jsgraph); | 29 AstGraphBuilder(Zone* local_zone, CompilationInfo* info, JSGraph* jsgraph, |
| 30 LoopAssignmentAnalysis* loop_assignment = NULL); |
30 | 31 |
31 // Creates a graph by visiting the entire AST. | 32 // Creates a graph by visiting the entire AST. |
32 bool CreateGraph(); | 33 bool CreateGraph(); |
33 | 34 |
34 protected: | 35 protected: |
35 class AstContext; | 36 class AstContext; |
36 class AstEffectContext; | 37 class AstEffectContext; |
37 class AstValueContext; | 38 class AstValueContext; |
38 class AstTestContext; | 39 class AstTestContext; |
39 class BreakableScope; | 40 class BreakableScope; |
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 | 442 |
442 Scope* AstGraphBuilder::current_scope() const { | 443 Scope* AstGraphBuilder::current_scope() const { |
443 return execution_context_->scope(); | 444 return execution_context_->scope(); |
444 } | 445 } |
445 | 446 |
446 } // namespace compiler | 447 } // namespace compiler |
447 } // namespace internal | 448 } // namespace internal |
448 } // namespace v8 | 449 } // namespace v8 |
449 | 450 |
450 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ | 451 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ |
OLD | NEW |