Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_FULL_CODEGEN_H_ | 5 #ifndef V8_FULL_CODEGEN_H_ |
| 6 #define V8_FULL_CODEGEN_H_ | 6 #define V8_FULL_CODEGEN_H_ |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 33 InitializeAstVisitor(zone); | 33 InitializeAstVisitor(zone); |
| 34 } | 34 } |
| 35 | 35 |
| 36 void Check(Statement* stmt); | 36 void Check(Statement* stmt); |
| 37 void Check(Expression* stmt); | 37 void Check(Expression* stmt); |
| 38 | 38 |
| 39 bool is_breakable() { return is_breakable_; } | 39 bool is_breakable() { return is_breakable_; } |
| 40 | 40 |
| 41 private: | 41 private: |
| 42 // AST node visit functions. | 42 // AST node visit functions. |
| 43 #define DECLARE_VISIT(type) virtual void Visit##type(type* node); | 43 #define DECLARE_VISIT(type) virtual void Visit##type(type* node) OVERRIDE; |
| 44 AST_NODE_LIST(DECLARE_VISIT) | 44 AST_NODE_LIST(DECLARE_VISIT) |
| 45 #undef DECLARE_VISIT | 45 #undef DECLARE_VISIT |
| 46 | 46 |
| 47 bool is_breakable_; | 47 bool is_breakable_; |
| 48 | 48 |
| 49 DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); | 49 DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); |
| 50 DISALLOW_COPY_AND_ASSIGN(BreakableStatementChecker); | 50 DISALLOW_COPY_AND_ASSIGN(BreakableStatementChecker); |
| 51 }; | 51 }; |
| 52 | 52 |
| 53 | 53 |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 385 Label* fall_through) { | 385 Label* fall_through) { |
| 386 TestContext context(this, expr, if_true, if_false, fall_through); | 386 TestContext context(this, expr, if_true, if_false, fall_through); |
| 387 Visit(expr); | 387 Visit(expr); |
| 388 // For test contexts, we prepare for bailout before branching, not at | 388 // For test contexts, we prepare for bailout before branching, not at |
| 389 // the end of the entire expression. This happens as part of visiting | 389 // the end of the entire expression. This happens as part of visiting |
| 390 // the expression. | 390 // the expression. |
| 391 } | 391 } |
| 392 | 392 |
| 393 void VisitInDuplicateContext(Expression* expr); | 393 void VisitInDuplicateContext(Expression* expr); |
| 394 | 394 |
| 395 void VisitDeclarations(ZoneList<Declaration*>* declarations); | 395 void VisitDeclarations(ZoneList<Declaration*>* declarations); |
|
Jakob Kummerow
2014/10/29 10:17:45
Another |VisitDeclarations| that should be both vi
Nico
2014/10/29 15:43:39
Yes (mentioned here: https://code.google.com/p/v8/
| |
| 396 void DeclareModules(Handle<FixedArray> descriptions); | 396 void DeclareModules(Handle<FixedArray> descriptions); |
| 397 void DeclareGlobals(Handle<FixedArray> pairs); | 397 void DeclareGlobals(Handle<FixedArray> pairs); |
| 398 int DeclareGlobalsFlags(); | 398 int DeclareGlobalsFlags(); |
| 399 | 399 |
| 400 // Generate code to allocate all (including nested) modules and contexts. | 400 // Generate code to allocate all (including nested) modules and contexts. |
| 401 // Because of recursive linking and the presence of module alias declarations, | 401 // Because of recursive linking and the presence of module alias declarations, |
| 402 // this has to be a separate pass _before_ populating or executing any module. | 402 // this has to be a separate pass _before_ populating or executing any module. |
| 403 void AllocateModules(ZoneList<Declaration*>* declarations); | 403 void AllocateModules(ZoneList<Declaration*>* declarations); |
| 404 | 404 |
| 405 // Generate code to create an iterator result object. The "value" property is | 405 // Generate code to create an iterator result object. The "value" property is |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 663 | 663 |
| 664 // Load a value from the current context. Indices are defined as an enum | 664 // Load a value from the current context. Indices are defined as an enum |
| 665 // in v8::internal::Context. | 665 // in v8::internal::Context. |
| 666 void LoadContextField(Register dst, int context_index); | 666 void LoadContextField(Register dst, int context_index); |
| 667 | 667 |
| 668 // Push the function argument for the runtime functions PushWithContext | 668 // Push the function argument for the runtime functions PushWithContext |
| 669 // and PushCatchContext. | 669 // and PushCatchContext. |
| 670 void PushFunctionArgumentForContextAllocation(); | 670 void PushFunctionArgumentForContextAllocation(); |
| 671 | 671 |
| 672 // AST node visit functions. | 672 // AST node visit functions. |
| 673 #define DECLARE_VISIT(type) virtual void Visit##type(type* node); | 673 #define DECLARE_VISIT(type) virtual void Visit##type(type* node) OVERRIDE; |
| 674 AST_NODE_LIST(DECLARE_VISIT) | 674 AST_NODE_LIST(DECLARE_VISIT) |
| 675 #undef DECLARE_VISIT | 675 #undef DECLARE_VISIT |
| 676 | 676 |
| 677 void VisitComma(BinaryOperation* expr); | 677 void VisitComma(BinaryOperation* expr); |
| 678 void VisitLogicalExpression(BinaryOperation* expr); | 678 void VisitLogicalExpression(BinaryOperation* expr); |
| 679 void VisitArithmeticExpression(BinaryOperation* expr); | 679 void VisitArithmeticExpression(BinaryOperation* expr); |
| 680 | 680 |
| 681 void VisitForTypeofValue(Expression* expr); | 681 void VisitForTypeofValue(Expression* expr); |
| 682 | 682 |
| 683 void Generate(); | 683 void Generate(); |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 998 | 998 |
| 999 Address start_; | 999 Address start_; |
| 1000 Address instruction_start_; | 1000 Address instruction_start_; |
| 1001 uint32_t length_; | 1001 uint32_t length_; |
| 1002 }; | 1002 }; |
| 1003 | 1003 |
| 1004 | 1004 |
| 1005 } } // namespace v8::internal | 1005 } } // namespace v8::internal |
| 1006 | 1006 |
| 1007 #endif // V8_FULL_CODEGEN_H_ | 1007 #endif // V8_FULL_CODEGEN_H_ |
| OLD | NEW |