Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: src/ast.h

Issue 1106383008: Remove unused Module-related AST nodes and associated codegen (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/ast-numbering.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_AST_H_ 5 #ifndef V8_AST_H_
6 #define V8_AST_H_ 6 #define V8_AST_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/assembler.h" 10 #include "src/assembler.h"
(...skipping 24 matching lines...) Expand all
35 // tree. 35 // tree.
36 36
37 37
38 // ---------------------------------------------------------------------------- 38 // ----------------------------------------------------------------------------
39 // Nodes of the abstract syntax tree. Only concrete classes are 39 // Nodes of the abstract syntax tree. Only concrete classes are
40 // enumerated here. 40 // enumerated here.
41 41
42 #define DECLARATION_NODE_LIST(V) \ 42 #define DECLARATION_NODE_LIST(V) \
43 V(VariableDeclaration) \ 43 V(VariableDeclaration) \
44 V(FunctionDeclaration) \ 44 V(FunctionDeclaration) \
45 V(ModuleDeclaration) \
46 V(ImportDeclaration) \ 45 V(ImportDeclaration) \
47 V(ExportDeclaration) 46 V(ExportDeclaration)
48 47
49 #define MODULE_NODE_LIST(V) \
50 V(ModuleLiteral) \
51 V(ModulePath) \
52 V(ModuleUrl)
53
54 #define STATEMENT_NODE_LIST(V) \ 48 #define STATEMENT_NODE_LIST(V) \
55 V(Block) \ 49 V(Block) \
56 V(ModuleStatement) \
57 V(ExpressionStatement) \ 50 V(ExpressionStatement) \
58 V(EmptyStatement) \ 51 V(EmptyStatement) \
59 V(IfStatement) \ 52 V(IfStatement) \
60 V(ContinueStatement) \ 53 V(ContinueStatement) \
61 V(BreakStatement) \ 54 V(BreakStatement) \
62 V(ReturnStatement) \ 55 V(ReturnStatement) \
63 V(WithStatement) \ 56 V(WithStatement) \
64 V(SwitchStatement) \ 57 V(SwitchStatement) \
65 V(DoWhileStatement) \ 58 V(DoWhileStatement) \
66 V(WhileStatement) \ 59 V(WhileStatement) \
(...skipping 25 matching lines...) Expand all
92 V(CountOperation) \ 85 V(CountOperation) \
93 V(BinaryOperation) \ 86 V(BinaryOperation) \
94 V(CompareOperation) \ 87 V(CompareOperation) \
95 V(Spread) \ 88 V(Spread) \
96 V(ThisFunction) \ 89 V(ThisFunction) \
97 V(SuperReference) \ 90 V(SuperReference) \
98 V(CaseClause) 91 V(CaseClause)
99 92
100 #define AST_NODE_LIST(V) \ 93 #define AST_NODE_LIST(V) \
101 DECLARATION_NODE_LIST(V) \ 94 DECLARATION_NODE_LIST(V) \
102 MODULE_NODE_LIST(V) \
103 STATEMENT_NODE_LIST(V) \ 95 STATEMENT_NODE_LIST(V) \
104 EXPRESSION_NODE_LIST(V) 96 EXPRESSION_NODE_LIST(V)
105 97
106 // Forward declarations 98 // Forward declarations
107 class AstNodeFactory; 99 class AstNodeFactory;
108 class AstVisitor; 100 class AstVisitor;
109 class Declaration; 101 class Declaration;
110 class Module; 102 class Module;
111 class BreakableStatement; 103 class BreakableStatement;
112 class Expression; 104 class Expression;
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 fun_(fun) { 602 fun_(fun) {
611 DCHECK(mode == VAR || mode == LET || mode == CONST); 603 DCHECK(mode == VAR || mode == LET || mode == CONST);
612 DCHECK(fun != NULL); 604 DCHECK(fun != NULL);
613 } 605 }
614 606
615 private: 607 private:
616 FunctionLiteral* fun_; 608 FunctionLiteral* fun_;
617 }; 609 };
618 610
619 611
620 class ModuleDeclaration final : public Declaration {
621 public:
622 DECLARE_NODE_TYPE(ModuleDeclaration)
623
624 Module* module() const { return module_; }
625 InitializationFlag initialization() const override {
626 return kCreatedInitialized;
627 }
628
629 protected:
630 ModuleDeclaration(Zone* zone, VariableProxy* proxy, Module* module,
631 Scope* scope, int pos)
632 : Declaration(zone, proxy, CONST, scope, pos), module_(module) {}
633
634 private:
635 Module* module_;
636 };
637
638
639 class ImportDeclaration final : public Declaration { 612 class ImportDeclaration final : public Declaration {
640 public: 613 public:
641 DECLARE_NODE_TYPE(ImportDeclaration) 614 DECLARE_NODE_TYPE(ImportDeclaration)
642 615
643 const AstRawString* import_name() const { return import_name_; } 616 const AstRawString* import_name() const { return import_name_; }
644 const AstRawString* module_specifier() const { return module_specifier_; } 617 const AstRawString* module_specifier() const { return module_specifier_; }
645 void set_module_specifier(const AstRawString* module_specifier) { 618 void set_module_specifier(const AstRawString* module_specifier) {
646 DCHECK(module_specifier_ == NULL); 619 DCHECK(module_specifier_ == NULL);
647 module_specifier_ = module_specifier; 620 module_specifier_ = module_specifier;
648 } 621 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 : AstNode(pos), descriptor_(ModuleDescriptor::New(zone)), body_(NULL) {} 661 : AstNode(pos), descriptor_(ModuleDescriptor::New(zone)), body_(NULL) {}
689 Module(Zone* zone, ModuleDescriptor* descriptor, int pos, Block* body = NULL) 662 Module(Zone* zone, ModuleDescriptor* descriptor, int pos, Block* body = NULL)
690 : AstNode(pos), descriptor_(descriptor), body_(body) {} 663 : AstNode(pos), descriptor_(descriptor), body_(body) {}
691 664
692 private: 665 private:
693 ModuleDescriptor* descriptor_; 666 ModuleDescriptor* descriptor_;
694 Block* body_; 667 Block* body_;
695 }; 668 };
696 669
697 670
698 class ModuleLiteral final : public Module {
699 public:
700 DECLARE_NODE_TYPE(ModuleLiteral)
701
702 protected:
703 ModuleLiteral(Zone* zone, Block* body, ModuleDescriptor* descriptor, int pos)
704 : Module(zone, descriptor, pos, body) {}
705 };
706
707
708 class ModulePath final : public Module {
709 public:
710 DECLARE_NODE_TYPE(ModulePath)
711
712 Module* module() const { return module_; }
713 Handle<String> name() const { return name_->string(); }
714
715 protected:
716 ModulePath(Zone* zone, Module* module, const AstRawString* name, int pos)
717 : Module(zone, pos), module_(module), name_(name) {}
718
719 private:
720 Module* module_;
721 const AstRawString* name_;
722 };
723
724
725 class ModuleUrl final : public Module {
726 public:
727 DECLARE_NODE_TYPE(ModuleUrl)
728
729 Handle<String> url() const { return url_; }
730
731 protected:
732 ModuleUrl(Zone* zone, Handle<String> url, int pos)
733 : Module(zone, pos), url_(url) {
734 }
735
736 private:
737 Handle<String> url_;
738 };
739
740
741 class ModuleStatement final : public Statement {
742 public:
743 DECLARE_NODE_TYPE(ModuleStatement)
744
745 Block* body() const { return body_; }
746
747 protected:
748 ModuleStatement(Zone* zone, Block* body, int pos)
749 : Statement(zone, pos), body_(body) {}
750
751 private:
752 Block* body_;
753 };
754
755
756 class IterationStatement : public BreakableStatement { 671 class IterationStatement : public BreakableStatement {
757 public: 672 public:
758 // Type testing & conversion. 673 // Type testing & conversion.
759 IterationStatement* AsIterationStatement() final { return this; } 674 IterationStatement* AsIterationStatement() final { return this; }
760 675
761 Statement* body() const { return body_; } 676 Statement* body() const { return body_; }
762 677
763 static int num_ids() { return parent_num_ids() + 1; } 678 static int num_ids() { return parent_num_ids() + 1; }
764 BailoutId OsrEntryId() const { return BailoutId(local_id(0)); } 679 BailoutId OsrEntryId() const { return BailoutId(local_id(0)); }
765 virtual BailoutId ContinueId() const = 0; 680 virtual BailoutId ContinueId() const = 0;
(...skipping 2468 matching lines...) Expand 10 before | Expand all | Expand 10 after
3234 } 3149 }
3235 3150
3236 FunctionDeclaration* NewFunctionDeclaration(VariableProxy* proxy, 3151 FunctionDeclaration* NewFunctionDeclaration(VariableProxy* proxy,
3237 VariableMode mode, 3152 VariableMode mode,
3238 FunctionLiteral* fun, 3153 FunctionLiteral* fun,
3239 Scope* scope, 3154 Scope* scope,
3240 int pos) { 3155 int pos) {
3241 return new (zone_) FunctionDeclaration(zone_, proxy, mode, fun, scope, pos); 3156 return new (zone_) FunctionDeclaration(zone_, proxy, mode, fun, scope, pos);
3242 } 3157 }
3243 3158
3244 ModuleDeclaration* NewModuleDeclaration(VariableProxy* proxy,
3245 Module* module,
3246 Scope* scope,
3247 int pos) {
3248 return new (zone_) ModuleDeclaration(zone_, proxy, module, scope, pos);
3249 }
3250
3251 ImportDeclaration* NewImportDeclaration(VariableProxy* proxy, 3159 ImportDeclaration* NewImportDeclaration(VariableProxy* proxy,
3252 const AstRawString* import_name, 3160 const AstRawString* import_name,
3253 const AstRawString* module_specifier, 3161 const AstRawString* module_specifier,
3254 Scope* scope, int pos) { 3162 Scope* scope, int pos) {
3255 return new (zone_) ImportDeclaration(zone_, proxy, import_name, 3163 return new (zone_) ImportDeclaration(zone_, proxy, import_name,
3256 module_specifier, scope, pos); 3164 module_specifier, scope, pos);
3257 } 3165 }
3258 3166
3259 ExportDeclaration* NewExportDeclaration(VariableProxy* proxy, 3167 ExportDeclaration* NewExportDeclaration(VariableProxy* proxy,
3260 Scope* scope, 3168 Scope* scope,
3261 int pos) { 3169 int pos) {
3262 return new (zone_) ExportDeclaration(zone_, proxy, scope, pos); 3170 return new (zone_) ExportDeclaration(zone_, proxy, scope, pos);
3263 } 3171 }
3264 3172
3265 ModuleLiteral* NewModuleLiteral(Block* body, ModuleDescriptor* descriptor,
3266 int pos) {
3267 return new (zone_) ModuleLiteral(zone_, body, descriptor, pos);
3268 }
3269
3270 ModulePath* NewModulePath(Module* origin, const AstRawString* name, int pos) {
3271 return new (zone_) ModulePath(zone_, origin, name, pos);
3272 }
3273
3274 ModuleUrl* NewModuleUrl(Handle<String> url, int pos) {
3275 return new (zone_) ModuleUrl(zone_, url, pos);
3276 }
3277
3278 Block* NewBlock(ZoneList<const AstRawString*>* labels, 3173 Block* NewBlock(ZoneList<const AstRawString*>* labels,
3279 int capacity, 3174 int capacity,
3280 bool is_initializer_block, 3175 bool is_initializer_block,
3281 int pos) { 3176 int pos) {
3282 return new (zone_) 3177 return new (zone_)
3283 Block(zone_, labels, capacity, is_initializer_block, pos); 3178 Block(zone_, labels, capacity, is_initializer_block, pos);
3284 } 3179 }
3285 3180
3286 #define STATEMENT_WITH_LABELS(NodeType) \ 3181 #define STATEMENT_WITH_LABELS(NodeType) \
3287 NodeType* New##NodeType(ZoneList<const AstRawString*>* labels, int pos) { \ 3182 NodeType* New##NodeType(ZoneList<const AstRawString*>* labels, int pos) { \
(...skipping 13 matching lines...) Expand all
3301 return new (zone_) ForInStatement(zone_, labels, pos); 3196 return new (zone_) ForInStatement(zone_, labels, pos);
3302 } 3197 }
3303 case ForEachStatement::ITERATE: { 3198 case ForEachStatement::ITERATE: {
3304 return new (zone_) ForOfStatement(zone_, labels, pos); 3199 return new (zone_) ForOfStatement(zone_, labels, pos);
3305 } 3200 }
3306 } 3201 }
3307 UNREACHABLE(); 3202 UNREACHABLE();
3308 return NULL; 3203 return NULL;
3309 } 3204 }
3310 3205
3311 ModuleStatement* NewModuleStatement(Block* body, int pos) {
3312 return new (zone_) ModuleStatement(zone_, body, pos);
3313 }
3314
3315 ExpressionStatement* NewExpressionStatement(Expression* expression, int pos) { 3206 ExpressionStatement* NewExpressionStatement(Expression* expression, int pos) {
3316 return new (zone_) ExpressionStatement(zone_, expression, pos); 3207 return new (zone_) ExpressionStatement(zone_, expression, pos);
3317 } 3208 }
3318 3209
3319 ContinueStatement* NewContinueStatement(IterationStatement* target, int pos) { 3210 ContinueStatement* NewContinueStatement(IterationStatement* target, int pos) {
3320 return new (zone_) ContinueStatement(zone_, target, pos); 3211 return new (zone_) ContinueStatement(zone_, target, pos);
3321 } 3212 }
3322 3213
3323 BreakStatement* NewBreakStatement(BreakableStatement* target, int pos) { 3214 BreakStatement* NewBreakStatement(BreakableStatement* target, int pos) {
3324 return new (zone_) BreakStatement(zone_, target, pos); 3215 return new (zone_) BreakStatement(zone_, target, pos);
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
3592 3483
3593 private: 3484 private:
3594 Zone* zone_; 3485 Zone* zone_;
3595 AstValueFactory* ast_value_factory_; 3486 AstValueFactory* ast_value_factory_;
3596 }; 3487 };
3597 3488
3598 3489
3599 } } // namespace v8::internal 3490 } } // namespace v8::internal
3600 3491
3601 #endif // V8_AST_H_ 3492 #endif // V8_AST_H_
OLDNEW
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/ast-numbering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698