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" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 Node* BuildLocalFunctionContext(Node* context, Node* closure); | 75 Node* BuildLocalFunctionContext(Node* context, Node* closure); |
76 | 76 |
77 // Builder to create an arguments object if it is used. | 77 // Builder to create an arguments object if it is used. |
78 Node* BuildArgumentsObject(Variable* arguments); | 78 Node* BuildArgumentsObject(Variable* arguments); |
79 | 79 |
80 // Builders for variable load and assignment. | 80 // Builders for variable load and assignment. |
81 Node* BuildVariableAssignment(Variable* var, Node* value, Token::Value op, | 81 Node* BuildVariableAssignment(Variable* var, Node* value, Token::Value op, |
82 BailoutId bailout_id); | 82 BailoutId bailout_id); |
83 Node* BuildVariableDelete(Variable* var, BailoutId bailout_id, | 83 Node* BuildVariableDelete(Variable* var, BailoutId bailout_id, |
84 OutputFrameStateCombine state_combine); | 84 OutputFrameStateCombine state_combine); |
85 Node* BuildVariableLoad(Variable* var, BailoutId bailout_id, | 85 Node* BuildVariableLoad(Variable* proxy, BailoutId bailout_id, |
| 86 const VectorSlotPair& feedback, |
86 ContextualMode mode = CONTEXTUAL); | 87 ContextualMode mode = CONTEXTUAL); |
87 | 88 |
88 // Builders for accessing the function context. | 89 // Builders for accessing the function context. |
89 Node* BuildLoadBuiltinsObject(); | 90 Node* BuildLoadBuiltinsObject(); |
90 Node* BuildLoadGlobalObject(); | 91 Node* BuildLoadGlobalObject(); |
91 Node* BuildLoadClosure(); | 92 Node* BuildLoadClosure(); |
92 Node* BuildLoadObjectField(Node* object, int offset); | 93 Node* BuildLoadObjectField(Node* object, int offset); |
93 | 94 |
94 // Builders for automatic type conversion. | 95 // Builders for automatic type conversion. |
95 Node* BuildToBoolean(Node* value); | 96 Node* BuildToBoolean(Node* value); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 | 137 |
137 CompilationInfo* info() const { return info_; } | 138 CompilationInfo* info() const { return info_; } |
138 inline StrictMode strict_mode() const; | 139 inline StrictMode strict_mode() const; |
139 JSGraph* jsgraph() { return jsgraph_; } | 140 JSGraph* jsgraph() { return jsgraph_; } |
140 JSOperatorBuilder* javascript() { return jsgraph_->javascript(); } | 141 JSOperatorBuilder* javascript() { return jsgraph_->javascript(); } |
141 ZoneList<Handle<Object> >* globals() { return &globals_; } | 142 ZoneList<Handle<Object> >* globals() { return &globals_; } |
142 | 143 |
143 // Current scope during visitation. | 144 // Current scope during visitation. |
144 inline Scope* current_scope() const; | 145 inline Scope* current_scope() const; |
145 | 146 |
| 147 // Named and keyed loads require a VectorSlotPair for successful lowering. |
| 148 VectorSlotPair CreateVectorSlotPair(int slot) const; |
| 149 |
146 // Process arguments to a call by popping {arity} elements off the operand | 150 // Process arguments to a call by popping {arity} elements off the operand |
147 // stack and build a call node using the given call operator. | 151 // stack and build a call node using the given call operator. |
148 Node* ProcessArguments(const Operator* op, int arity); | 152 Node* ProcessArguments(const Operator* op, int arity); |
149 | 153 |
150 // Visit statements. | 154 // Visit statements. |
151 void VisitIfNotNull(Statement* stmt); | 155 void VisitIfNotNull(Statement* stmt); |
152 | 156 |
153 // Visit expressions. | 157 // Visit expressions. |
154 void VisitForTest(Expression* expr); | 158 void VisitForTest(Expression* expr); |
155 void VisitForEffect(Expression* expr); | 159 void VisitForEffect(Expression* expr); |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 }; | 432 }; |
429 | 433 |
430 Scope* AstGraphBuilder::current_scope() const { | 434 Scope* AstGraphBuilder::current_scope() const { |
431 return execution_context_->scope(); | 435 return execution_context_->scope(); |
432 } | 436 } |
433 } | 437 } |
434 } | 438 } |
435 } // namespace v8::internal::compiler | 439 } // namespace v8::internal::compiler |
436 | 440 |
437 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ | 441 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ |
OLD | NEW |