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

Side by Side Diff: src/compiler/control-builders.h

Issue 1088993003: Replace OVERRIDE->override and FINAL->final since we now require C++11. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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/compiler/common-operator-reducer.h ('k') | src/compiler/control-equivalence.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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_COMPILER_CONTROL_BUILDERS_H_ 5 #ifndef V8_COMPILER_CONTROL_BUILDERS_H_
6 #define V8_COMPILER_CONTROL_BUILDERS_H_ 6 #define V8_COMPILER_CONTROL_BUILDERS_H_
7 7
8 #include "src/compiler/ast-graph-builder.h" 8 #include "src/compiler/ast-graph-builder.h"
9 #include "src/compiler/node.h" 9 #include "src/compiler/node.h"
10 10
(...skipping 19 matching lines...) Expand all
30 Zone* zone() const { return builder_->local_zone(); } 30 Zone* zone() const { return builder_->local_zone(); }
31 Environment* environment() { return builder_->environment(); } 31 Environment* environment() { return builder_->environment(); }
32 void set_environment(Environment* env) { builder_->set_environment(env); } 32 void set_environment(Environment* env) { builder_->set_environment(env); }
33 Node* the_hole() const { return builder_->jsgraph()->TheHoleConstant(); } 33 Node* the_hole() const { return builder_->jsgraph()->TheHoleConstant(); }
34 34
35 Builder* builder_; 35 Builder* builder_;
36 }; 36 };
37 37
38 38
39 // Tracks control flow for a conditional statement. 39 // Tracks control flow for a conditional statement.
40 class IfBuilder FINAL : public ControlBuilder { 40 class IfBuilder final : public ControlBuilder {
41 public: 41 public:
42 explicit IfBuilder(AstGraphBuilder* builder) 42 explicit IfBuilder(AstGraphBuilder* builder)
43 : ControlBuilder(builder), 43 : ControlBuilder(builder),
44 then_environment_(NULL), 44 then_environment_(NULL),
45 else_environment_(NULL) {} 45 else_environment_(NULL) {}
46 46
47 // Primitive control commands. 47 // Primitive control commands.
48 void If(Node* condition, BranchHint hint = BranchHint::kNone); 48 void If(Node* condition, BranchHint hint = BranchHint::kNone);
49 void Then(); 49 void Then();
50 void Else(); 50 void Else();
51 void End(); 51 void End();
52 52
53 private: 53 private:
54 Environment* then_environment_; // Environment after the 'then' body. 54 Environment* then_environment_; // Environment after the 'then' body.
55 Environment* else_environment_; // Environment for the 'else' body. 55 Environment* else_environment_; // Environment for the 'else' body.
56 }; 56 };
57 57
58 58
59 // Tracks control flow for an iteration statement. 59 // Tracks control flow for an iteration statement.
60 class LoopBuilder FINAL : public ControlBuilder { 60 class LoopBuilder final : public ControlBuilder {
61 public: 61 public:
62 explicit LoopBuilder(AstGraphBuilder* builder) 62 explicit LoopBuilder(AstGraphBuilder* builder)
63 : ControlBuilder(builder), 63 : ControlBuilder(builder),
64 loop_environment_(NULL), 64 loop_environment_(NULL),
65 continue_environment_(NULL), 65 continue_environment_(NULL),
66 break_environment_(NULL) {} 66 break_environment_(NULL) {}
67 67
68 // Primitive control commands. 68 // Primitive control commands.
69 void BeginLoop(BitVector* assigned, bool is_osr = false); 69 void BeginLoop(BitVector* assigned, bool is_osr = false);
70 void Continue(); 70 void Continue();
71 void EndBody(); 71 void EndBody();
72 void EndLoop(); 72 void EndLoop();
73 73
74 // Primitive support for break. 74 // Primitive support for break.
75 void Break() FINAL; 75 void Break() final;
76 76
77 // Compound control commands for conditional break. 77 // Compound control commands for conditional break.
78 void BreakUnless(Node* condition); 78 void BreakUnless(Node* condition);
79 void BreakWhen(Node* condition); 79 void BreakWhen(Node* condition);
80 80
81 private: 81 private:
82 Environment* loop_environment_; // Environment of the loop header. 82 Environment* loop_environment_; // Environment of the loop header.
83 Environment* continue_environment_; // Environment after the loop body. 83 Environment* continue_environment_; // Environment after the loop body.
84 Environment* break_environment_; // Environment after the loop exits. 84 Environment* break_environment_; // Environment after the loop exits.
85 }; 85 };
86 86
87 87
88 // Tracks control flow for a switch statement. 88 // Tracks control flow for a switch statement.
89 class SwitchBuilder FINAL : public ControlBuilder { 89 class SwitchBuilder final : public ControlBuilder {
90 public: 90 public:
91 explicit SwitchBuilder(AstGraphBuilder* builder, int case_count) 91 explicit SwitchBuilder(AstGraphBuilder* builder, int case_count)
92 : ControlBuilder(builder), 92 : ControlBuilder(builder),
93 body_environment_(NULL), 93 body_environment_(NULL),
94 label_environment_(NULL), 94 label_environment_(NULL),
95 break_environment_(NULL), 95 break_environment_(NULL),
96 body_environments_(case_count, zone()) {} 96 body_environments_(case_count, zone()) {}
97 97
98 // Primitive control commands. 98 // Primitive control commands.
99 void BeginSwitch(); 99 void BeginSwitch();
100 void BeginLabel(int index, Node* condition); 100 void BeginLabel(int index, Node* condition);
101 void EndLabel(); 101 void EndLabel();
102 void DefaultAt(int index); 102 void DefaultAt(int index);
103 void BeginCase(int index); 103 void BeginCase(int index);
104 void EndCase(); 104 void EndCase();
105 void EndSwitch(); 105 void EndSwitch();
106 106
107 // Primitive support for break. 107 // Primitive support for break.
108 void Break() FINAL; 108 void Break() final;
109 109
110 // The number of cases within a switch is statically known. 110 // The number of cases within a switch is statically known.
111 size_t case_count() const { return body_environments_.size(); } 111 size_t case_count() const { return body_environments_.size(); }
112 112
113 private: 113 private:
114 Environment* body_environment_; // Environment after last case body. 114 Environment* body_environment_; // Environment after last case body.
115 Environment* label_environment_; // Environment for next label condition. 115 Environment* label_environment_; // Environment for next label condition.
116 Environment* break_environment_; // Environment after the switch exits. 116 Environment* break_environment_; // Environment after the switch exits.
117 ZoneVector<Environment*> body_environments_; 117 ZoneVector<Environment*> body_environments_;
118 }; 118 };
119 119
120 120
121 // Tracks control flow for a block statement. 121 // Tracks control flow for a block statement.
122 class BlockBuilder FINAL : public ControlBuilder { 122 class BlockBuilder final : public ControlBuilder {
123 public: 123 public:
124 explicit BlockBuilder(AstGraphBuilder* builder) 124 explicit BlockBuilder(AstGraphBuilder* builder)
125 : ControlBuilder(builder), break_environment_(NULL) {} 125 : ControlBuilder(builder), break_environment_(NULL) {}
126 126
127 // Primitive control commands. 127 // Primitive control commands.
128 void BeginBlock(); 128 void BeginBlock();
129 void EndBlock(); 129 void EndBlock();
130 130
131 // Primitive support for break. 131 // Primitive support for break.
132 void Break() FINAL; 132 void Break() final;
133 133
134 private: 134 private:
135 Environment* break_environment_; // Environment after the block exits. 135 Environment* break_environment_; // Environment after the block exits.
136 }; 136 };
137 137
138 138
139 // Tracks control flow for a try-catch statement. 139 // Tracks control flow for a try-catch statement.
140 class TryCatchBuilder FINAL : public ControlBuilder { 140 class TryCatchBuilder final : public ControlBuilder {
141 public: 141 public:
142 explicit TryCatchBuilder(AstGraphBuilder* builder) 142 explicit TryCatchBuilder(AstGraphBuilder* builder)
143 : ControlBuilder(builder), 143 : ControlBuilder(builder),
144 catch_environment_(NULL), 144 catch_environment_(NULL),
145 exit_environment_(NULL), 145 exit_environment_(NULL),
146 exception_node_(NULL) {} 146 exception_node_(NULL) {}
147 147
148 // Primitive control commands. 148 // Primitive control commands.
149 void BeginTry(); 149 void BeginTry();
150 void Throw(Node* exception); 150 void Throw(Node* exception);
151 void EndTry(); 151 void EndTry();
152 void EndCatch(); 152 void EndCatch();
153 153
154 // Returns the exception value inside the 'catch' body. 154 // Returns the exception value inside the 'catch' body.
155 Node* GetExceptionNode() const { return exception_node_; } 155 Node* GetExceptionNode() const { return exception_node_; }
156 156
157 private: 157 private:
158 Environment* catch_environment_; // Environment for the 'catch' body. 158 Environment* catch_environment_; // Environment for the 'catch' body.
159 Environment* exit_environment_; // Environment after the statement. 159 Environment* exit_environment_; // Environment after the statement.
160 Node* exception_node_; // Node for exception in 'catch' body. 160 Node* exception_node_; // Node for exception in 'catch' body.
161 }; 161 };
162 162
163 163
164 // Tracks control flow for a try-finally statement. 164 // Tracks control flow for a try-finally statement.
165 class TryFinallyBuilder FINAL : public ControlBuilder { 165 class TryFinallyBuilder final : public ControlBuilder {
166 public: 166 public:
167 explicit TryFinallyBuilder(AstGraphBuilder* builder) 167 explicit TryFinallyBuilder(AstGraphBuilder* builder)
168 : ControlBuilder(builder), 168 : ControlBuilder(builder),
169 finally_environment_(NULL), 169 finally_environment_(NULL),
170 token_node_(NULL), 170 token_node_(NULL),
171 value_node_(NULL) {} 171 value_node_(NULL) {}
172 172
173 // Primitive control commands. 173 // Primitive control commands.
174 void BeginTry(); 174 void BeginTry();
175 void LeaveTry(Node* token, Node* value); 175 void LeaveTry(Node* token, Node* value);
(...skipping 10 matching lines...) Expand all
186 Environment* finally_environment_; // Environment for the 'finally' body. 186 Environment* finally_environment_; // Environment for the 'finally' body.
187 Node* token_node_; // Node for token in 'finally' body. 187 Node* token_node_; // Node for token in 'finally' body.
188 Node* value_node_; // Node for value in 'finally' body. 188 Node* value_node_; // Node for value in 'finally' body.
189 }; 189 };
190 190
191 } // namespace compiler 191 } // namespace compiler
192 } // namespace internal 192 } // namespace internal
193 } // namespace v8 193 } // namespace v8
194 194
195 #endif // V8_COMPILER_CONTROL_BUILDERS_H_ 195 #endif // V8_COMPILER_CONTROL_BUILDERS_H_
OLDNEW
« no previous file with comments | « src/compiler/common-operator-reducer.h ('k') | src/compiler/control-equivalence.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698