OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 V(ExportDeclaration) \ | 68 V(ExportDeclaration) \ |
69 | 69 |
70 #define MODULE_NODE_LIST(V) \ | 70 #define MODULE_NODE_LIST(V) \ |
71 V(ModuleLiteral) \ | 71 V(ModuleLiteral) \ |
72 V(ModuleVariable) \ | 72 V(ModuleVariable) \ |
73 V(ModulePath) \ | 73 V(ModulePath) \ |
74 V(ModuleUrl) | 74 V(ModuleUrl) |
75 | 75 |
76 #define STATEMENT_NODE_LIST(V) \ | 76 #define STATEMENT_NODE_LIST(V) \ |
77 V(Block) \ | 77 V(Block) \ |
| 78 V(ModuleStatement) \ |
78 V(ExpressionStatement) \ | 79 V(ExpressionStatement) \ |
79 V(EmptyStatement) \ | 80 V(EmptyStatement) \ |
80 V(IfStatement) \ | 81 V(IfStatement) \ |
81 V(ContinueStatement) \ | 82 V(ContinueStatement) \ |
82 V(BreakStatement) \ | 83 V(BreakStatement) \ |
83 V(ReturnStatement) \ | 84 V(ReturnStatement) \ |
84 V(WithStatement) \ | 85 V(WithStatement) \ |
85 V(SwitchStatement) \ | 86 V(SwitchStatement) \ |
86 V(DoWhileStatement) \ | 87 V(DoWhileStatement) \ |
87 V(WhileStatement) \ | 88 V(WhileStatement) \ |
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 | 516 |
516 Module* module() const { return module_; } | 517 Module* module() const { return module_; } |
517 virtual InitializationFlag initialization() const { | 518 virtual InitializationFlag initialization() const { |
518 return kCreatedInitialized; | 519 return kCreatedInitialized; |
519 } | 520 } |
520 | 521 |
521 protected: | 522 protected: |
522 ModuleDeclaration(VariableProxy* proxy, | 523 ModuleDeclaration(VariableProxy* proxy, |
523 Module* module, | 524 Module* module, |
524 Scope* scope) | 525 Scope* scope) |
525 : Declaration(proxy, LET, scope), | 526 : Declaration(proxy, MODULE, scope), |
526 module_(module) { | 527 module_(module) { |
527 } | 528 } |
528 | 529 |
529 private: | 530 private: |
530 Module* module_; | 531 Module* module_; |
531 }; | 532 }; |
532 | 533 |
533 | 534 |
534 class ImportDeclaration: public Declaration { | 535 class ImportDeclaration: public Declaration { |
535 public: | 536 public: |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 protected: | 639 protected: |
639 ModuleUrl(Handle<String> url, Zone* zone) | 640 ModuleUrl(Handle<String> url, Zone* zone) |
640 : Module(zone), url_(url) { | 641 : Module(zone), url_(url) { |
641 } | 642 } |
642 | 643 |
643 private: | 644 private: |
644 Handle<String> url_; | 645 Handle<String> url_; |
645 }; | 646 }; |
646 | 647 |
647 | 648 |
| 649 class ModuleStatement: public Statement { |
| 650 public: |
| 651 DECLARE_NODE_TYPE(ModuleStatement) |
| 652 |
| 653 VariableProxy* proxy() const { return proxy_; } |
| 654 Block* body() const { return body_; } |
| 655 |
| 656 protected: |
| 657 ModuleStatement(VariableProxy* proxy, Block* body) |
| 658 : proxy_(proxy), |
| 659 body_(body) { |
| 660 } |
| 661 |
| 662 private: |
| 663 VariableProxy* proxy_; |
| 664 Block* body_; |
| 665 }; |
| 666 |
| 667 |
648 class IterationStatement: public BreakableStatement { | 668 class IterationStatement: public BreakableStatement { |
649 public: | 669 public: |
650 // Type testing & conversion. | 670 // Type testing & conversion. |
651 virtual IterationStatement* AsIterationStatement() { return this; } | 671 virtual IterationStatement* AsIterationStatement() { return this; } |
652 | 672 |
653 Statement* body() const { return body_; } | 673 Statement* body() const { return body_; } |
654 | 674 |
655 BailoutId OsrEntryId() const { return osr_entry_id_; } | 675 BailoutId OsrEntryId() const { return osr_entry_id_; } |
656 virtual BailoutId ContinueId() const = 0; | 676 virtual BailoutId ContinueId() const = 0; |
657 virtual BailoutId StackCheckId() const = 0; | 677 virtual BailoutId StackCheckId() const = 0; |
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1410 Handle<String> name() const { return name_; } | 1430 Handle<String> name() const { return name_; } |
1411 Variable* var() const { return var_; } | 1431 Variable* var() const { return var_; } |
1412 bool is_this() const { return is_this_; } | 1432 bool is_this() const { return is_this_; } |
1413 int position() const { return position_; } | 1433 int position() const { return position_; } |
1414 Interface* interface() const { return interface_; } | 1434 Interface* interface() const { return interface_; } |
1415 | 1435 |
1416 | 1436 |
1417 void MarkAsTrivial() { is_trivial_ = true; } | 1437 void MarkAsTrivial() { is_trivial_ = true; } |
1418 void MarkAsLValue() { is_lvalue_ = true; } | 1438 void MarkAsLValue() { is_lvalue_ = true; } |
1419 | 1439 |
1420 // Bind this proxy to the variable var. | 1440 // Bind this proxy to the variable var. Interfaces must match. |
1421 void BindTo(Variable* var); | 1441 void BindTo(Variable* var); |
1422 | 1442 |
1423 protected: | 1443 protected: |
1424 VariableProxy(Isolate* isolate, Variable* var); | 1444 VariableProxy(Isolate* isolate, Variable* var); |
1425 | 1445 |
1426 VariableProxy(Isolate* isolate, | 1446 VariableProxy(Isolate* isolate, |
1427 Handle<String> name, | 1447 Handle<String> name, |
1428 bool is_this, | 1448 bool is_this, |
1429 Interface* interface, | 1449 Interface* interface, |
1430 int position); | 1450 int position); |
(...skipping 1209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2640 NodeType* stmt = new(zone_) NodeType(isolate_, labels); \ | 2660 NodeType* stmt = new(zone_) NodeType(isolate_, labels); \ |
2641 VISIT_AND_RETURN(NodeType, stmt); \ | 2661 VISIT_AND_RETURN(NodeType, stmt); \ |
2642 } | 2662 } |
2643 STATEMENT_WITH_LABELS(DoWhileStatement) | 2663 STATEMENT_WITH_LABELS(DoWhileStatement) |
2644 STATEMENT_WITH_LABELS(WhileStatement) | 2664 STATEMENT_WITH_LABELS(WhileStatement) |
2645 STATEMENT_WITH_LABELS(ForStatement) | 2665 STATEMENT_WITH_LABELS(ForStatement) |
2646 STATEMENT_WITH_LABELS(ForInStatement) | 2666 STATEMENT_WITH_LABELS(ForInStatement) |
2647 STATEMENT_WITH_LABELS(SwitchStatement) | 2667 STATEMENT_WITH_LABELS(SwitchStatement) |
2648 #undef STATEMENT_WITH_LABELS | 2668 #undef STATEMENT_WITH_LABELS |
2649 | 2669 |
| 2670 ModuleStatement* NewModuleStatement(VariableProxy* proxy, Block* body) { |
| 2671 ModuleStatement* stmt = new(zone_) ModuleStatement(proxy, body); |
| 2672 VISIT_AND_RETURN(ModuleStatement, stmt) |
| 2673 } |
| 2674 |
2650 ExpressionStatement* NewExpressionStatement(Expression* expression) { | 2675 ExpressionStatement* NewExpressionStatement(Expression* expression) { |
2651 ExpressionStatement* stmt = new(zone_) ExpressionStatement(expression); | 2676 ExpressionStatement* stmt = new(zone_) ExpressionStatement(expression); |
2652 VISIT_AND_RETURN(ExpressionStatement, stmt) | 2677 VISIT_AND_RETURN(ExpressionStatement, stmt) |
2653 } | 2678 } |
2654 | 2679 |
2655 ContinueStatement* NewContinueStatement(IterationStatement* target) { | 2680 ContinueStatement* NewContinueStatement(IterationStatement* target) { |
2656 ContinueStatement* stmt = new(zone_) ContinueStatement(target); | 2681 ContinueStatement* stmt = new(zone_) ContinueStatement(target); |
2657 VISIT_AND_RETURN(ContinueStatement, stmt) | 2682 VISIT_AND_RETURN(ContinueStatement, stmt) |
2658 } | 2683 } |
2659 | 2684 |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2903 private: | 2928 private: |
2904 Isolate* isolate_; | 2929 Isolate* isolate_; |
2905 Zone* zone_; | 2930 Zone* zone_; |
2906 Visitor visitor_; | 2931 Visitor visitor_; |
2907 }; | 2932 }; |
2908 | 2933 |
2909 | 2934 |
2910 } } // namespace v8::internal | 2935 } } // namespace v8::internal |
2911 | 2936 |
2912 #endif // V8_AST_H_ | 2937 #endif // V8_AST_H_ |
OLD | NEW |