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/ast.h" | 8 #include "src/ast.h" |
9 #include "src/compiler/js-graph.h" | 9 #include "src/compiler/js-graph.h" |
10 #include "src/compiler/liveness-analyzer.h" | 10 #include "src/compiler/liveness-analyzer.h" |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 Node* BuildLocalFunctionContext(Node* context, Node* patched_receiver); | 251 Node* BuildLocalFunctionContext(Node* context, Node* patched_receiver); |
252 Node* BuildLocalScriptContext(Scope* scope); | 252 Node* BuildLocalScriptContext(Scope* scope); |
253 Node* BuildLocalBlockContext(Scope* scope); | 253 Node* BuildLocalBlockContext(Scope* scope); |
254 | 254 |
255 // Builder to create an arguments object if it is used. | 255 // Builder to create an arguments object if it is used. |
256 Node* BuildArgumentsObject(Variable* arguments); | 256 Node* BuildArgumentsObject(Variable* arguments); |
257 | 257 |
258 // Builder to create an array of rest parameters if used | 258 // Builder to create an array of rest parameters if used |
259 Node* BuildRestArgumentsArray(Variable* rest, int index); | 259 Node* BuildRestArgumentsArray(Variable* rest, int index); |
260 | 260 |
| 261 // Builder that assigns to the .this_function internal variable if needed. |
| 262 Node* BuildThisFunctionVar(Variable* this_function_var); |
| 263 |
261 // Builders for variable load and assignment. | 264 // Builders for variable load and assignment. |
262 Node* BuildVariableAssignment(Variable* variable, Node* value, | 265 Node* BuildVariableAssignment(Variable* variable, Node* value, |
263 Token::Value op, BailoutId bailout_id, | 266 Token::Value op, BailoutId bailout_id, |
264 FrameStateBeforeAndAfter& states, | 267 FrameStateBeforeAndAfter& states, |
265 OutputFrameStateCombine framestate_combine = | 268 OutputFrameStateCombine framestate_combine = |
266 OutputFrameStateCombine::Ignore()); | 269 OutputFrameStateCombine::Ignore()); |
267 Node* BuildVariableDelete(Variable* variable, BailoutId bailout_id, | 270 Node* BuildVariableDelete(Variable* variable, BailoutId bailout_id, |
268 OutputFrameStateCombine framestate_combine); | 271 OutputFrameStateCombine framestate_combine); |
269 Node* BuildVariableLoad(Variable* variable, BailoutId bailout_id, | 272 Node* BuildVariableLoad(Variable* variable, BailoutId bailout_id, |
270 FrameStateBeforeAndAfter& states, | 273 FrameStateBeforeAndAfter& states, |
271 const VectorSlotPair& feedback, | 274 const VectorSlotPair& feedback, |
272 OutputFrameStateCombine framestate_combine, | 275 OutputFrameStateCombine framestate_combine, |
273 ContextualMode mode = CONTEXTUAL); | 276 ContextualMode mode = CONTEXTUAL); |
274 | 277 |
275 // Builders for property loads and stores. | 278 // Builders for property loads and stores. |
276 Node* BuildKeyedLoad(Node* receiver, Node* key, | 279 Node* BuildKeyedLoad(Node* receiver, Node* key, |
277 const VectorSlotPair& feedback); | 280 const VectorSlotPair& feedback); |
278 Node* BuildNamedLoad(Node* receiver, Handle<Name> name, | 281 Node* BuildNamedLoad(Node* receiver, Handle<Name> name, |
279 const VectorSlotPair& feedback, | 282 const VectorSlotPair& feedback, |
280 ContextualMode mode = NOT_CONTEXTUAL); | 283 ContextualMode mode = NOT_CONTEXTUAL); |
281 Node* BuildKeyedStore(Node* receiver, Node* key, Node* value, | 284 Node* BuildKeyedStore(Node* receiver, Node* key, Node* value, |
282 TypeFeedbackId id); | 285 TypeFeedbackId id); |
283 Node* BuildNamedStore(Node* receiver, Handle<Name>, Node* value, | 286 Node* BuildNamedStore(Node* receiver, Handle<Name>, Node* value, |
284 TypeFeedbackId id); | 287 TypeFeedbackId id); |
285 | 288 |
| 289 // Builders for super property loads and stores. |
| 290 Node* BuildKeyedSuperStore(Node* receiver, Node* home_object, Node* key, |
| 291 Node* value, TypeFeedbackId id); |
| 292 Node* BuildNamedSuperStore(Node* receiver, Node* home_object, |
| 293 Handle<Name> name, Node* value, TypeFeedbackId id); |
| 294 Node* BuildNamedSuperLoad(Node* receiver, Node* home_object, |
| 295 Handle<Name> name, const VectorSlotPair& feedback); |
| 296 Node* BuildKeyedSuperLoad(Node* receiver, Node* home_object, Node* key, |
| 297 const VectorSlotPair& feedback); |
| 298 |
286 // Builders for accessing the function context. | 299 // Builders for accessing the function context. |
287 Node* BuildLoadBuiltinsObject(); | 300 Node* BuildLoadBuiltinsObject(); |
288 Node* BuildLoadGlobalObject(); | 301 Node* BuildLoadGlobalObject(); |
289 Node* BuildLoadGlobalProxy(); | 302 Node* BuildLoadGlobalProxy(); |
290 Node* BuildLoadClosure(); | 303 Node* BuildLoadClosure(); |
291 Node* BuildLoadObjectField(Node* object, int offset); | 304 Node* BuildLoadObjectField(Node* object, int offset); |
292 | 305 |
293 // Builders for accessing external references. | 306 // Builders for accessing external references. |
294 Node* BuildLoadExternal(ExternalReference ref, MachineType type); | 307 Node* BuildLoadExternal(ExternalReference ref, MachineType type); |
295 Node* BuildStoreExternal(ExternalReference ref, MachineType type, Node* val); | 308 Node* BuildStoreExternal(ExternalReference ref, MachineType type, Node* val); |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 | 526 |
514 // Prepare environment to be used as loop header. | 527 // Prepare environment to be used as loop header. |
515 void PrepareForLoop(BitVector* assigned, bool is_osr = false); | 528 void PrepareForLoop(BitVector* assigned, bool is_osr = false); |
516 }; | 529 }; |
517 | 530 |
518 } // namespace compiler | 531 } // namespace compiler |
519 } // namespace internal | 532 } // namespace internal |
520 } // namespace v8 | 533 } // namespace v8 |
521 | 534 |
522 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ | 535 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ |
OLD | NEW |