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/ast.h" | 8 #include "src/ast/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 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 // Builder that assigns to the {.this_function} internal variable if needed. | 276 // Builder that assigns to the {.this_function} internal variable if needed. |
277 Node* BuildThisFunctionVariable(Variable* this_function_var); | 277 Node* BuildThisFunctionVariable(Variable* this_function_var); |
278 | 278 |
279 // Builder that assigns to the {new.target} internal variable if needed. | 279 // Builder that assigns to the {new.target} internal variable if needed. |
280 Node* BuildNewTargetVariable(Variable* new_target_var); | 280 Node* BuildNewTargetVariable(Variable* new_target_var); |
281 | 281 |
282 // Builders for variable load and assignment. | 282 // Builders for variable load and assignment. |
283 Node* BuildVariableAssignment(Variable* variable, Node* value, | 283 Node* BuildVariableAssignment(Variable* variable, Node* value, |
284 Token::Value op, const VectorSlotPair& slot, | 284 Token::Value op, const VectorSlotPair& slot, |
285 BailoutId bailout_id, | 285 BailoutId bailout_id, |
286 FrameStateBeforeAndAfter& states, | |
287 OutputFrameStateCombine framestate_combine = | 286 OutputFrameStateCombine framestate_combine = |
288 OutputFrameStateCombine::Ignore()); | 287 OutputFrameStateCombine::Ignore()); |
289 Node* BuildVariableDelete(Variable* variable, BailoutId bailout_id, | 288 Node* BuildVariableDelete(Variable* variable, BailoutId bailout_id, |
290 OutputFrameStateCombine framestate_combine); | 289 OutputFrameStateCombine framestate_combine); |
291 Node* BuildVariableLoad(Variable* variable, BailoutId bailout_id, | 290 Node* BuildVariableLoad(Variable* variable, BailoutId bailout_id, |
292 FrameStateBeforeAndAfter& states, | |
293 const VectorSlotPair& feedback, | 291 const VectorSlotPair& feedback, |
294 OutputFrameStateCombine framestate_combine, | 292 OutputFrameStateCombine framestate_combine, |
295 TypeofMode typeof_mode = NOT_INSIDE_TYPEOF); | 293 TypeofMode typeof_mode = NOT_INSIDE_TYPEOF); |
296 | 294 |
297 // Builders for property loads and stores. | 295 // Builders for property loads and stores. |
298 Node* BuildKeyedLoad(Node* receiver, Node* key, | 296 Node* BuildKeyedLoad(Node* receiver, Node* key, |
299 const VectorSlotPair& feedback); | 297 const VectorSlotPair& feedback); |
300 Node* BuildNamedLoad(Node* receiver, Handle<Name> name, | 298 Node* BuildNamedLoad(Node* receiver, Handle<Name> name, |
301 const VectorSlotPair& feedback); | 299 const VectorSlotPair& feedback); |
302 Node* BuildKeyedStore(Node* receiver, Node* key, Node* value, | 300 Node* BuildKeyedStore(Node* receiver, Node* key, Node* value, |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
373 // that these are optimizations, disabling any of them should still produce | 371 // that these are optimizations, disabling any of them should still produce |
374 // correct graphs. | 372 // correct graphs. |
375 | 373 |
376 // Optimization for variable load from global object. | 374 // Optimization for variable load from global object. |
377 Node* TryLoadGlobalConstant(Handle<Name> name); | 375 Node* TryLoadGlobalConstant(Handle<Name> name); |
378 | 376 |
379 // Optimization for variable load of dynamic lookup slot that is most likely | 377 // Optimization for variable load of dynamic lookup slot that is most likely |
380 // to resolve to a global slot or context slot (inferred from scope chain). | 378 // to resolve to a global slot or context slot (inferred from scope chain). |
381 Node* TryLoadDynamicVariable(Variable* variable, Handle<String> name, | 379 Node* TryLoadDynamicVariable(Variable* variable, Handle<String> name, |
382 BailoutId bailout_id, | 380 BailoutId bailout_id, |
383 FrameStateBeforeAndAfter& states, | |
384 const VectorSlotPair& feedback, | 381 const VectorSlotPair& feedback, |
385 OutputFrameStateCombine combine, | 382 OutputFrameStateCombine combine, |
386 TypeofMode typeof_mode); | 383 TypeofMode typeof_mode); |
387 | 384 |
388 // Optimizations for automatic type conversion. | 385 // Optimizations for automatic type conversion. |
389 Node* TryFastToBoolean(Node* input); | 386 Node* TryFastToBoolean(Node* input); |
390 Node* TryFastToName(Node* input); | 387 Node* TryFastToName(Node* input); |
391 | 388 |
392 // =========================================================================== | 389 // =========================================================================== |
393 // The following visitation methods all recursively visit a subtree of the | 390 // The following visitation methods all recursively visit a subtree of the |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 | 595 |
599 // Prepare environment to be used as loop header. | 596 // Prepare environment to be used as loop header. |
600 void PrepareForLoop(BitVector* assigned, bool is_osr = false); | 597 void PrepareForLoop(BitVector* assigned, bool is_osr = false); |
601 }; | 598 }; |
602 | 599 |
603 } // namespace compiler | 600 } // namespace compiler |
604 } // namespace internal | 601 } // namespace internal |
605 } // namespace v8 | 602 } // namespace v8 |
606 | 603 |
607 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ | 604 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ |
OLD | NEW |