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 |