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

Side by Side Diff: src/ast/ast-traversal-visitor.h

Issue 2301423002: includes: Make ast.h not need isolate.h any more. (Closed)
Patch Set: rebased Created 4 years, 3 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/ast/ast-numbering.cc ('k') | src/ast/modules.h » ('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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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_AST_TRAVERSAL_VISITOR_H_ 5 #ifndef V8_AST_AST_TRAVERSAL_VISITOR_H_
6 #define V8_AST_AST_TRAVERSAL_VISITOR_H_ 6 #define V8_AST_AST_TRAVERSAL_VISITOR_H_
7 7
8 #include "src/ast/ast.h" 8 #include "src/ast/ast.h"
9 #include "src/ast/scopes.h" 9 #include "src/ast/scopes.h"
10 10
(...skipping 10 matching lines...) Expand all
21 // It invokes VisitNode on each AST node, before proceeding with its subtrees. 21 // It invokes VisitNode on each AST node, before proceeding with its subtrees.
22 // It invokes VisitExpression (after VisitNode) on each AST node that is an 22 // It invokes VisitExpression (after VisitNode) on each AST node that is an
23 // expression, before proceeding with its subtrees. 23 // expression, before proceeding with its subtrees.
24 // It proceeds with the subtrees only if these two methods return true. 24 // It proceeds with the subtrees only if these two methods return true.
25 // Sub-classes may override VisitNode and VisitExpressions, whose implementation 25 // Sub-classes may override VisitNode and VisitExpressions, whose implementation
26 // is dummy here. Or they may override the specific Visit* methods. 26 // is dummy here. Or they may override the specific Visit* methods.
27 27
28 template <class Subclass> 28 template <class Subclass>
29 class AstTraversalVisitor : public AstVisitor<Subclass> { 29 class AstTraversalVisitor : public AstVisitor<Subclass> {
30 public: 30 public:
31 explicit AstTraversalVisitor(Isolate* isolate, AstNode* root = nullptr);
32 explicit AstTraversalVisitor(uintptr_t stack_limit, AstNode* root = nullptr); 31 explicit AstTraversalVisitor(uintptr_t stack_limit, AstNode* root = nullptr);
33 32
34 void Run() { 33 void Run() {
35 DCHECK_NOT_NULL(root_); 34 DCHECK_NOT_NULL(root_);
36 Visit(root_); 35 Visit(root_);
37 } 36 }
38 37
39 bool VisitNode(AstNode* node) { return true; } 38 bool VisitNode(AstNode* node) { return true; }
40 bool VisitExpression(Expression* node) { return true; } 39 bool VisitExpression(Expression* node) { return true; }
41 40
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 80
82 #define RECURSE_EXPRESSION(call) \ 81 #define RECURSE_EXPRESSION(call) \
83 do { \ 82 do { \
84 DCHECK(!HasStackOverflow()); \ 83 DCHECK(!HasStackOverflow()); \
85 ++depth_; \ 84 ++depth_; \
86 this->impl()->call; \ 85 this->impl()->call; \
87 --depth_; \ 86 --depth_; \
88 if (HasStackOverflow()) return; \ 87 if (HasStackOverflow()) return; \
89 } while (false) 88 } while (false)
90 89
91 template <class Subclass>
92 AstTraversalVisitor<Subclass>::AstTraversalVisitor(Isolate* isolate,
93 AstNode* root)
94 : root_(root), depth_(0) {
95 InitializeAstVisitor(isolate);
96 }
97 90
98 template <class Subclass> 91 template <class Subclass>
99 AstTraversalVisitor<Subclass>::AstTraversalVisitor(uintptr_t stack_limit, 92 AstTraversalVisitor<Subclass>::AstTraversalVisitor(uintptr_t stack_limit,
100 AstNode* root) 93 AstNode* root)
101 : root_(root), depth_(0) { 94 : root_(root), depth_(0) {
102 InitializeAstVisitor(stack_limit); 95 InitializeAstVisitor(stack_limit);
103 } 96 }
104 97
105 template <class Subclass> 98 template <class Subclass>
106 void AstTraversalVisitor<Subclass>::VisitDeclarations( 99 void AstTraversalVisitor<Subclass>::VisitDeclarations(
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 488
496 #undef PROCESS_NODE 489 #undef PROCESS_NODE
497 #undef PROCESS_EXPRESSION 490 #undef PROCESS_EXPRESSION
498 #undef RECURSE_EXPRESSION 491 #undef RECURSE_EXPRESSION
499 #undef RECURSE 492 #undef RECURSE
500 493
501 } // namespace internal 494 } // namespace internal
502 } // namespace v8 495 } // namespace v8
503 496
504 #endif // V8_AST_AST_TRAVERSAL_VISITOR_H_ 497 #endif // V8_AST_AST_TRAVERSAL_VISITOR_H_
OLDNEW
« no previous file with comments | « src/ast/ast-numbering.cc ('k') | src/ast/modules.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698