OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 #include "test/unittests/compiler/node-test-utils.h" | 5 #include "test/unittests/compiler/node-test-utils.h" |
6 | 6 |
7 #include "src/compiler/node-properties-inl.h" | 7 #include "src/compiler/node-properties-inl.h" |
8 #include "src/compiler/simplified-operator.h" | 8 #include "src/compiler/simplified-operator.h" |
9 | 9 |
10 using testing::_; | 10 using testing::_; |
(...skipping 21 matching lines...) Expand all Loading... |
32 return false; | 32 return false; |
33 } | 33 } |
34 return true; | 34 return true; |
35 } | 35 } |
36 | 36 |
37 | 37 |
38 class NodeMatcher : public MatcherInterface<Node*> { | 38 class NodeMatcher : public MatcherInterface<Node*> { |
39 public: | 39 public: |
40 explicit NodeMatcher(IrOpcode::Value opcode) : opcode_(opcode) {} | 40 explicit NodeMatcher(IrOpcode::Value opcode) : opcode_(opcode) {} |
41 | 41 |
42 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 42 void DescribeTo(std::ostream* os) const OVERRIDE { |
43 *os << "is a " << IrOpcode::Mnemonic(opcode_) << " node"; | 43 *os << "is a " << IrOpcode::Mnemonic(opcode_) << " node"; |
44 } | 44 } |
45 | 45 |
46 virtual bool MatchAndExplain(Node* node, | 46 bool MatchAndExplain(Node* node, |
47 MatchResultListener* listener) const OVERRIDE { | 47 MatchResultListener* listener) const OVERRIDE { |
48 if (node == NULL) { | 48 if (node == NULL) { |
49 *listener << "which is NULL"; | 49 *listener << "which is NULL"; |
50 return false; | 50 return false; |
51 } | 51 } |
52 if (node->opcode() != opcode_) { | 52 if (node->opcode() != opcode_) { |
53 *listener << "whose opcode is " << IrOpcode::Mnemonic(node->opcode()) | 53 *listener << "whose opcode is " << IrOpcode::Mnemonic(node->opcode()) |
54 << " but should have been " << IrOpcode::Mnemonic(opcode_); | 54 << " but should have been " << IrOpcode::Mnemonic(opcode_); |
55 return false; | 55 return false; |
56 } | 56 } |
57 return true; | 57 return true; |
58 } | 58 } |
59 | 59 |
60 private: | 60 private: |
61 const IrOpcode::Value opcode_; | 61 const IrOpcode::Value opcode_; |
62 }; | 62 }; |
63 | 63 |
64 | 64 |
65 class IsBranchMatcher FINAL : public NodeMatcher { | 65 class IsBranchMatcher FINAL : public NodeMatcher { |
66 public: | 66 public: |
67 IsBranchMatcher(const Matcher<Node*>& value_matcher, | 67 IsBranchMatcher(const Matcher<Node*>& value_matcher, |
68 const Matcher<Node*>& control_matcher) | 68 const Matcher<Node*>& control_matcher) |
69 : NodeMatcher(IrOpcode::kBranch), | 69 : NodeMatcher(IrOpcode::kBranch), |
70 value_matcher_(value_matcher), | 70 value_matcher_(value_matcher), |
71 control_matcher_(control_matcher) {} | 71 control_matcher_(control_matcher) {} |
72 | 72 |
73 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 73 void DescribeTo(std::ostream* os) const FINAL { |
74 NodeMatcher::DescribeTo(os); | 74 NodeMatcher::DescribeTo(os); |
75 *os << " whose value ("; | 75 *os << " whose value ("; |
76 value_matcher_.DescribeTo(os); | 76 value_matcher_.DescribeTo(os); |
77 *os << ") and control ("; | 77 *os << ") and control ("; |
78 control_matcher_.DescribeTo(os); | 78 control_matcher_.DescribeTo(os); |
79 *os << ")"; | 79 *os << ")"; |
80 } | 80 } |
81 | 81 |
82 virtual bool MatchAndExplain(Node* node, | 82 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
83 MatchResultListener* listener) const OVERRIDE { | |
84 return (NodeMatcher::MatchAndExplain(node, listener) && | 83 return (NodeMatcher::MatchAndExplain(node, listener) && |
85 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), | 84 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
86 "value", value_matcher_, listener) && | 85 "value", value_matcher_, listener) && |
87 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 86 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
88 "control", control_matcher_, listener)); | 87 "control", control_matcher_, listener)); |
89 } | 88 } |
90 | 89 |
91 private: | 90 private: |
92 const Matcher<Node*> value_matcher_; | 91 const Matcher<Node*> value_matcher_; |
93 const Matcher<Node*> control_matcher_; | 92 const Matcher<Node*> control_matcher_; |
94 }; | 93 }; |
95 | 94 |
96 | 95 |
97 class IsMergeMatcher FINAL : public NodeMatcher { | 96 class IsMergeMatcher FINAL : public NodeMatcher { |
98 public: | 97 public: |
99 IsMergeMatcher(const Matcher<Node*>& control0_matcher, | 98 IsMergeMatcher(const Matcher<Node*>& control0_matcher, |
100 const Matcher<Node*>& control1_matcher) | 99 const Matcher<Node*>& control1_matcher) |
101 : NodeMatcher(IrOpcode::kMerge), | 100 : NodeMatcher(IrOpcode::kMerge), |
102 control0_matcher_(control0_matcher), | 101 control0_matcher_(control0_matcher), |
103 control1_matcher_(control1_matcher) {} | 102 control1_matcher_(control1_matcher) {} |
104 | 103 |
105 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 104 void DescribeTo(std::ostream* os) const FINAL { |
106 NodeMatcher::DescribeTo(os); | 105 NodeMatcher::DescribeTo(os); |
107 *os << " whose control0 ("; | 106 *os << " whose control0 ("; |
108 control0_matcher_.DescribeTo(os); | 107 control0_matcher_.DescribeTo(os); |
109 *os << ") and control1 ("; | 108 *os << ") and control1 ("; |
110 control1_matcher_.DescribeTo(os); | 109 control1_matcher_.DescribeTo(os); |
111 *os << ")"; | 110 *os << ")"; |
112 } | 111 } |
113 | 112 |
114 virtual bool MatchAndExplain(Node* node, | 113 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
115 MatchResultListener* listener) const OVERRIDE { | |
116 return (NodeMatcher::MatchAndExplain(node, listener) && | 114 return (NodeMatcher::MatchAndExplain(node, listener) && |
117 PrintMatchAndExplain(NodeProperties::GetControlInput(node, 0), | 115 PrintMatchAndExplain(NodeProperties::GetControlInput(node, 0), |
118 "control0", control0_matcher_, listener) && | 116 "control0", control0_matcher_, listener) && |
119 PrintMatchAndExplain(NodeProperties::GetControlInput(node, 1), | 117 PrintMatchAndExplain(NodeProperties::GetControlInput(node, 1), |
120 "control1", control1_matcher_, listener)); | 118 "control1", control1_matcher_, listener)); |
121 } | 119 } |
122 | 120 |
123 private: | 121 private: |
124 const Matcher<Node*> control0_matcher_; | 122 const Matcher<Node*> control0_matcher_; |
125 const Matcher<Node*> control1_matcher_; | 123 const Matcher<Node*> control1_matcher_; |
126 }; | 124 }; |
127 | 125 |
128 | 126 |
129 class IsControl1Matcher FINAL : public NodeMatcher { | 127 class IsControl1Matcher FINAL : public NodeMatcher { |
130 public: | 128 public: |
131 IsControl1Matcher(IrOpcode::Value opcode, | 129 IsControl1Matcher(IrOpcode::Value opcode, |
132 const Matcher<Node*>& control_matcher) | 130 const Matcher<Node*>& control_matcher) |
133 : NodeMatcher(opcode), control_matcher_(control_matcher) {} | 131 : NodeMatcher(opcode), control_matcher_(control_matcher) {} |
134 | 132 |
135 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 133 void DescribeTo(std::ostream* os) const FINAL { |
136 NodeMatcher::DescribeTo(os); | 134 NodeMatcher::DescribeTo(os); |
137 *os << " whose control ("; | 135 *os << " whose control ("; |
138 control_matcher_.DescribeTo(os); | 136 control_matcher_.DescribeTo(os); |
139 *os << ")"; | 137 *os << ")"; |
140 } | 138 } |
141 | 139 |
142 virtual bool MatchAndExplain(Node* node, | 140 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
143 MatchResultListener* listener) const OVERRIDE { | |
144 return (NodeMatcher::MatchAndExplain(node, listener) && | 141 return (NodeMatcher::MatchAndExplain(node, listener) && |
145 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 142 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
146 "control", control_matcher_, listener)); | 143 "control", control_matcher_, listener)); |
147 } | 144 } |
148 | 145 |
149 private: | 146 private: |
150 const Matcher<Node*> control_matcher_; | 147 const Matcher<Node*> control_matcher_; |
151 }; | 148 }; |
152 | 149 |
153 | 150 |
154 class IsFinishMatcher FINAL : public NodeMatcher { | 151 class IsFinishMatcher FINAL : public NodeMatcher { |
155 public: | 152 public: |
156 IsFinishMatcher(const Matcher<Node*>& value_matcher, | 153 IsFinishMatcher(const Matcher<Node*>& value_matcher, |
157 const Matcher<Node*>& effect_matcher) | 154 const Matcher<Node*>& effect_matcher) |
158 : NodeMatcher(IrOpcode::kFinish), | 155 : NodeMatcher(IrOpcode::kFinish), |
159 value_matcher_(value_matcher), | 156 value_matcher_(value_matcher), |
160 effect_matcher_(effect_matcher) {} | 157 effect_matcher_(effect_matcher) {} |
161 | 158 |
162 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 159 void DescribeTo(std::ostream* os) const FINAL { |
163 NodeMatcher::DescribeTo(os); | 160 NodeMatcher::DescribeTo(os); |
164 *os << " whose value ("; | 161 *os << " whose value ("; |
165 value_matcher_.DescribeTo(os); | 162 value_matcher_.DescribeTo(os); |
166 *os << ") and effect ("; | 163 *os << ") and effect ("; |
167 effect_matcher_.DescribeTo(os); | 164 effect_matcher_.DescribeTo(os); |
168 *os << ")"; | 165 *os << ")"; |
169 } | 166 } |
170 | 167 |
171 virtual bool MatchAndExplain(Node* node, | 168 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
172 MatchResultListener* listener) const OVERRIDE { | |
173 return (NodeMatcher::MatchAndExplain(node, listener) && | 169 return (NodeMatcher::MatchAndExplain(node, listener) && |
174 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), | 170 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
175 "value", value_matcher_, listener) && | 171 "value", value_matcher_, listener) && |
176 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 172 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
177 effect_matcher_, listener)); | 173 effect_matcher_, listener)); |
178 } | 174 } |
179 | 175 |
180 private: | 176 private: |
181 const Matcher<Node*> value_matcher_; | 177 const Matcher<Node*> value_matcher_; |
182 const Matcher<Node*> effect_matcher_; | 178 const Matcher<Node*> effect_matcher_; |
183 }; | 179 }; |
184 | 180 |
185 | 181 |
186 template <typename T> | 182 template <typename T> |
187 class IsConstantMatcher FINAL : public NodeMatcher { | 183 class IsConstantMatcher FINAL : public NodeMatcher { |
188 public: | 184 public: |
189 IsConstantMatcher(IrOpcode::Value opcode, const Matcher<T>& value_matcher) | 185 IsConstantMatcher(IrOpcode::Value opcode, const Matcher<T>& value_matcher) |
190 : NodeMatcher(opcode), value_matcher_(value_matcher) {} | 186 : NodeMatcher(opcode), value_matcher_(value_matcher) {} |
191 | 187 |
192 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 188 void DescribeTo(std::ostream* os) const FINAL { |
193 NodeMatcher::DescribeTo(os); | 189 NodeMatcher::DescribeTo(os); |
194 *os << " whose value ("; | 190 *os << " whose value ("; |
195 value_matcher_.DescribeTo(os); | 191 value_matcher_.DescribeTo(os); |
196 *os << ")"; | 192 *os << ")"; |
197 } | 193 } |
198 | 194 |
199 virtual bool MatchAndExplain(Node* node, | 195 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
200 MatchResultListener* listener) const OVERRIDE { | |
201 return (NodeMatcher::MatchAndExplain(node, listener) && | 196 return (NodeMatcher::MatchAndExplain(node, listener) && |
202 PrintMatchAndExplain(OpParameter<T>(node), "value", value_matcher_, | 197 PrintMatchAndExplain(OpParameter<T>(node), "value", value_matcher_, |
203 listener)); | 198 listener)); |
204 } | 199 } |
205 | 200 |
206 private: | 201 private: |
207 const Matcher<T> value_matcher_; | 202 const Matcher<T> value_matcher_; |
208 }; | 203 }; |
209 | 204 |
210 | 205 |
211 class IsSelectMatcher FINAL : public NodeMatcher { | 206 class IsSelectMatcher FINAL : public NodeMatcher { |
212 public: | 207 public: |
213 IsSelectMatcher(const Matcher<MachineType>& type_matcher, | 208 IsSelectMatcher(const Matcher<MachineType>& type_matcher, |
214 const Matcher<Node*>& value0_matcher, | 209 const Matcher<Node*>& value0_matcher, |
215 const Matcher<Node*>& value1_matcher, | 210 const Matcher<Node*>& value1_matcher, |
216 const Matcher<Node*>& value2_matcher) | 211 const Matcher<Node*>& value2_matcher) |
217 : NodeMatcher(IrOpcode::kSelect), | 212 : NodeMatcher(IrOpcode::kSelect), |
218 type_matcher_(type_matcher), | 213 type_matcher_(type_matcher), |
219 value0_matcher_(value0_matcher), | 214 value0_matcher_(value0_matcher), |
220 value1_matcher_(value1_matcher), | 215 value1_matcher_(value1_matcher), |
221 value2_matcher_(value2_matcher) {} | 216 value2_matcher_(value2_matcher) {} |
222 | 217 |
223 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 218 void DescribeTo(std::ostream* os) const FINAL { |
224 NodeMatcher::DescribeTo(os); | 219 NodeMatcher::DescribeTo(os); |
225 *os << " whose type ("; | 220 *os << " whose type ("; |
226 type_matcher_.DescribeTo(os); | 221 type_matcher_.DescribeTo(os); |
227 *os << "), value0 ("; | 222 *os << "), value0 ("; |
228 value0_matcher_.DescribeTo(os); | 223 value0_matcher_.DescribeTo(os); |
229 *os << "), value1 ("; | 224 *os << "), value1 ("; |
230 value1_matcher_.DescribeTo(os); | 225 value1_matcher_.DescribeTo(os); |
231 *os << ") and value2 ("; | 226 *os << ") and value2 ("; |
232 value2_matcher_.DescribeTo(os); | 227 value2_matcher_.DescribeTo(os); |
233 *os << ")"; | 228 *os << ")"; |
234 } | 229 } |
235 | 230 |
236 virtual bool MatchAndExplain(Node* node, | 231 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
237 MatchResultListener* listener) const OVERRIDE { | |
238 return (NodeMatcher::MatchAndExplain(node, listener) && | 232 return (NodeMatcher::MatchAndExplain(node, listener) && |
239 PrintMatchAndExplain(OpParameter<MachineType>(node), "type", | 233 PrintMatchAndExplain(OpParameter<MachineType>(node), "type", |
240 type_matcher_, listener) && | 234 type_matcher_, listener) && |
241 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), | 235 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
242 "value0", value0_matcher_, listener) && | 236 "value0", value0_matcher_, listener) && |
243 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 237 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
244 "value1", value1_matcher_, listener) && | 238 "value1", value1_matcher_, listener) && |
245 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), | 239 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), |
246 "value2", value2_matcher_, listener)); | 240 "value2", value2_matcher_, listener)); |
247 } | 241 } |
(...skipping 11 matching lines...) Expand all Loading... |
259 IsPhiMatcher(const Matcher<MachineType>& type_matcher, | 253 IsPhiMatcher(const Matcher<MachineType>& type_matcher, |
260 const Matcher<Node*>& value0_matcher, | 254 const Matcher<Node*>& value0_matcher, |
261 const Matcher<Node*>& value1_matcher, | 255 const Matcher<Node*>& value1_matcher, |
262 const Matcher<Node*>& control_matcher) | 256 const Matcher<Node*>& control_matcher) |
263 : NodeMatcher(IrOpcode::kPhi), | 257 : NodeMatcher(IrOpcode::kPhi), |
264 type_matcher_(type_matcher), | 258 type_matcher_(type_matcher), |
265 value0_matcher_(value0_matcher), | 259 value0_matcher_(value0_matcher), |
266 value1_matcher_(value1_matcher), | 260 value1_matcher_(value1_matcher), |
267 control_matcher_(control_matcher) {} | 261 control_matcher_(control_matcher) {} |
268 | 262 |
269 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 263 void DescribeTo(std::ostream* os) const FINAL { |
270 NodeMatcher::DescribeTo(os); | 264 NodeMatcher::DescribeTo(os); |
271 *os << " whose type ("; | 265 *os << " whose type ("; |
272 type_matcher_.DescribeTo(os); | 266 type_matcher_.DescribeTo(os); |
273 *os << "), value0 ("; | 267 *os << "), value0 ("; |
274 value0_matcher_.DescribeTo(os); | 268 value0_matcher_.DescribeTo(os); |
275 *os << "), value1 ("; | 269 *os << "), value1 ("; |
276 value1_matcher_.DescribeTo(os); | 270 value1_matcher_.DescribeTo(os); |
277 *os << ") and control ("; | 271 *os << ") and control ("; |
278 control_matcher_.DescribeTo(os); | 272 control_matcher_.DescribeTo(os); |
279 *os << ")"; | 273 *os << ")"; |
280 } | 274 } |
281 | 275 |
282 virtual bool MatchAndExplain(Node* node, | 276 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
283 MatchResultListener* listener) const OVERRIDE { | |
284 return (NodeMatcher::MatchAndExplain(node, listener) && | 277 return (NodeMatcher::MatchAndExplain(node, listener) && |
285 PrintMatchAndExplain(OpParameter<MachineType>(node), "type", | 278 PrintMatchAndExplain(OpParameter<MachineType>(node), "type", |
286 type_matcher_, listener) && | 279 type_matcher_, listener) && |
287 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), | 280 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
288 "value0", value0_matcher_, listener) && | 281 "value0", value0_matcher_, listener) && |
289 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 282 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
290 "value1", value1_matcher_, listener) && | 283 "value1", value1_matcher_, listener) && |
291 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 284 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
292 "control", control_matcher_, listener)); | 285 "control", control_matcher_, listener)); |
293 } | 286 } |
294 | 287 |
295 private: | 288 private: |
296 const Matcher<MachineType> type_matcher_; | 289 const Matcher<MachineType> type_matcher_; |
297 const Matcher<Node*> value0_matcher_; | 290 const Matcher<Node*> value0_matcher_; |
298 const Matcher<Node*> value1_matcher_; | 291 const Matcher<Node*> value1_matcher_; |
299 const Matcher<Node*> control_matcher_; | 292 const Matcher<Node*> control_matcher_; |
300 }; | 293 }; |
301 | 294 |
302 | 295 |
303 class IsEffectPhiMatcher FINAL : public NodeMatcher { | 296 class IsEffectPhiMatcher FINAL : public NodeMatcher { |
304 public: | 297 public: |
305 IsEffectPhiMatcher(const Matcher<Node*>& effect0_matcher, | 298 IsEffectPhiMatcher(const Matcher<Node*>& effect0_matcher, |
306 const Matcher<Node*>& effect1_matcher, | 299 const Matcher<Node*>& effect1_matcher, |
307 const Matcher<Node*>& control_matcher) | 300 const Matcher<Node*>& control_matcher) |
308 : NodeMatcher(IrOpcode::kEffectPhi), | 301 : NodeMatcher(IrOpcode::kEffectPhi), |
309 effect0_matcher_(effect0_matcher), | 302 effect0_matcher_(effect0_matcher), |
310 effect1_matcher_(effect1_matcher), | 303 effect1_matcher_(effect1_matcher), |
311 control_matcher_(control_matcher) {} | 304 control_matcher_(control_matcher) {} |
312 | 305 |
313 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 306 void DescribeTo(std::ostream* os) const FINAL { |
314 NodeMatcher::DescribeTo(os); | 307 NodeMatcher::DescribeTo(os); |
315 *os << "), effect0 ("; | 308 *os << "), effect0 ("; |
316 effect0_matcher_.DescribeTo(os); | 309 effect0_matcher_.DescribeTo(os); |
317 *os << "), effect1 ("; | 310 *os << "), effect1 ("; |
318 effect1_matcher_.DescribeTo(os); | 311 effect1_matcher_.DescribeTo(os); |
319 *os << ") and control ("; | 312 *os << ") and control ("; |
320 control_matcher_.DescribeTo(os); | 313 control_matcher_.DescribeTo(os); |
321 *os << ")"; | 314 *os << ")"; |
322 } | 315 } |
323 | 316 |
324 virtual bool MatchAndExplain(Node* node, | 317 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
325 MatchResultListener* listener) const OVERRIDE { | |
326 return (NodeMatcher::MatchAndExplain(node, listener) && | 318 return (NodeMatcher::MatchAndExplain(node, listener) && |
327 PrintMatchAndExplain(NodeProperties::GetEffectInput(node, 0), | 319 PrintMatchAndExplain(NodeProperties::GetEffectInput(node, 0), |
328 "effect0", effect0_matcher_, listener) && | 320 "effect0", effect0_matcher_, listener) && |
329 PrintMatchAndExplain(NodeProperties::GetEffectInput(node, 1), | 321 PrintMatchAndExplain(NodeProperties::GetEffectInput(node, 1), |
330 "effect1", effect1_matcher_, listener) && | 322 "effect1", effect1_matcher_, listener) && |
331 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 323 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
332 "control", control_matcher_, listener)); | 324 "control", control_matcher_, listener)); |
333 } | 325 } |
334 | 326 |
335 private: | 327 private: |
336 const Matcher<Node*> effect0_matcher_; | 328 const Matcher<Node*> effect0_matcher_; |
337 const Matcher<Node*> effect1_matcher_; | 329 const Matcher<Node*> effect1_matcher_; |
338 const Matcher<Node*> control_matcher_; | 330 const Matcher<Node*> control_matcher_; |
339 }; | 331 }; |
340 | 332 |
341 | 333 |
342 class IsProjectionMatcher FINAL : public NodeMatcher { | 334 class IsProjectionMatcher FINAL : public NodeMatcher { |
343 public: | 335 public: |
344 IsProjectionMatcher(const Matcher<size_t>& index_matcher, | 336 IsProjectionMatcher(const Matcher<size_t>& index_matcher, |
345 const Matcher<Node*>& base_matcher) | 337 const Matcher<Node*>& base_matcher) |
346 : NodeMatcher(IrOpcode::kProjection), | 338 : NodeMatcher(IrOpcode::kProjection), |
347 index_matcher_(index_matcher), | 339 index_matcher_(index_matcher), |
348 base_matcher_(base_matcher) {} | 340 base_matcher_(base_matcher) {} |
349 | 341 |
350 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 342 void DescribeTo(std::ostream* os) const FINAL { |
351 NodeMatcher::DescribeTo(os); | 343 NodeMatcher::DescribeTo(os); |
352 *os << " whose index ("; | 344 *os << " whose index ("; |
353 index_matcher_.DescribeTo(os); | 345 index_matcher_.DescribeTo(os); |
354 *os << ") and base ("; | 346 *os << ") and base ("; |
355 base_matcher_.DescribeTo(os); | 347 base_matcher_.DescribeTo(os); |
356 *os << ")"; | 348 *os << ")"; |
357 } | 349 } |
358 | 350 |
359 virtual bool MatchAndExplain(Node* node, | 351 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
360 MatchResultListener* listener) const OVERRIDE { | |
361 return (NodeMatcher::MatchAndExplain(node, listener) && | 352 return (NodeMatcher::MatchAndExplain(node, listener) && |
362 PrintMatchAndExplain(OpParameter<size_t>(node), "index", | 353 PrintMatchAndExplain(OpParameter<size_t>(node), "index", |
363 index_matcher_, listener) && | 354 index_matcher_, listener) && |
364 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", | 355 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", |
365 base_matcher_, listener)); | 356 base_matcher_, listener)); |
366 } | 357 } |
367 | 358 |
368 private: | 359 private: |
369 const Matcher<size_t> index_matcher_; | 360 const Matcher<size_t> index_matcher_; |
370 const Matcher<Node*> base_matcher_; | 361 const Matcher<Node*> base_matcher_; |
371 }; | 362 }; |
372 | 363 |
373 | 364 |
374 class IsCall2Matcher FINAL : public NodeMatcher { | 365 class IsCall2Matcher FINAL : public NodeMatcher { |
375 public: | 366 public: |
376 IsCall2Matcher(const Matcher<CallDescriptor*>& descriptor_matcher, | 367 IsCall2Matcher(const Matcher<CallDescriptor*>& descriptor_matcher, |
377 const Matcher<Node*>& value0_matcher, | 368 const Matcher<Node*>& value0_matcher, |
378 const Matcher<Node*>& value1_matcher, | 369 const Matcher<Node*>& value1_matcher, |
379 const Matcher<Node*>& effect_matcher, | 370 const Matcher<Node*>& effect_matcher, |
380 const Matcher<Node*>& control_matcher) | 371 const Matcher<Node*>& control_matcher) |
381 : NodeMatcher(IrOpcode::kCall), | 372 : NodeMatcher(IrOpcode::kCall), |
382 descriptor_matcher_(descriptor_matcher), | 373 descriptor_matcher_(descriptor_matcher), |
383 value0_matcher_(value0_matcher), | 374 value0_matcher_(value0_matcher), |
384 value1_matcher_(value1_matcher), | 375 value1_matcher_(value1_matcher), |
385 effect_matcher_(effect_matcher), | 376 effect_matcher_(effect_matcher), |
386 control_matcher_(control_matcher) {} | 377 control_matcher_(control_matcher) {} |
387 | 378 |
388 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 379 void DescribeTo(std::ostream* os) const FINAL { |
389 NodeMatcher::DescribeTo(os); | 380 NodeMatcher::DescribeTo(os); |
390 *os << " whose value0 ("; | 381 *os << " whose value0 ("; |
391 value0_matcher_.DescribeTo(os); | 382 value0_matcher_.DescribeTo(os); |
392 *os << ") and value1 ("; | 383 *os << ") and value1 ("; |
393 value1_matcher_.DescribeTo(os); | 384 value1_matcher_.DescribeTo(os); |
394 *os << ") and effect ("; | 385 *os << ") and effect ("; |
395 effect_matcher_.DescribeTo(os); | 386 effect_matcher_.DescribeTo(os); |
396 *os << ") and control ("; | 387 *os << ") and control ("; |
397 control_matcher_.DescribeTo(os); | 388 control_matcher_.DescribeTo(os); |
398 *os << ")"; | 389 *os << ")"; |
399 } | 390 } |
400 | 391 |
401 virtual bool MatchAndExplain(Node* node, | 392 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
402 MatchResultListener* listener) const OVERRIDE { | |
403 return (NodeMatcher::MatchAndExplain(node, listener) && | 393 return (NodeMatcher::MatchAndExplain(node, listener) && |
404 PrintMatchAndExplain(OpParameter<CallDescriptor*>(node), | 394 PrintMatchAndExplain(OpParameter<CallDescriptor*>(node), |
405 "descriptor", descriptor_matcher_, listener) && | 395 "descriptor", descriptor_matcher_, listener) && |
406 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), | 396 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
407 "value0", value0_matcher_, listener) && | 397 "value0", value0_matcher_, listener) && |
408 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 398 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
409 "value1", value1_matcher_, listener) && | 399 "value1", value1_matcher_, listener) && |
410 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 400 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
411 effect_matcher_, listener) && | 401 effect_matcher_, listener) && |
412 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 402 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
(...skipping 20 matching lines...) Expand all Loading... |
433 const Matcher<Node*>& control_matcher) | 423 const Matcher<Node*>& control_matcher) |
434 : NodeMatcher(IrOpcode::kCall), | 424 : NodeMatcher(IrOpcode::kCall), |
435 descriptor_matcher_(descriptor_matcher), | 425 descriptor_matcher_(descriptor_matcher), |
436 value0_matcher_(value0_matcher), | 426 value0_matcher_(value0_matcher), |
437 value1_matcher_(value1_matcher), | 427 value1_matcher_(value1_matcher), |
438 value2_matcher_(value2_matcher), | 428 value2_matcher_(value2_matcher), |
439 value3_matcher_(value3_matcher), | 429 value3_matcher_(value3_matcher), |
440 effect_matcher_(effect_matcher), | 430 effect_matcher_(effect_matcher), |
441 control_matcher_(control_matcher) {} | 431 control_matcher_(control_matcher) {} |
442 | 432 |
443 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 433 void DescribeTo(std::ostream* os) const FINAL { |
444 NodeMatcher::DescribeTo(os); | 434 NodeMatcher::DescribeTo(os); |
445 *os << " whose value0 ("; | 435 *os << " whose value0 ("; |
446 value0_matcher_.DescribeTo(os); | 436 value0_matcher_.DescribeTo(os); |
447 *os << ") and value1 ("; | 437 *os << ") and value1 ("; |
448 value1_matcher_.DescribeTo(os); | 438 value1_matcher_.DescribeTo(os); |
449 *os << ") and value2 ("; | 439 *os << ") and value2 ("; |
450 value2_matcher_.DescribeTo(os); | 440 value2_matcher_.DescribeTo(os); |
451 *os << ") and value3 ("; | 441 *os << ") and value3 ("; |
452 value3_matcher_.DescribeTo(os); | 442 value3_matcher_.DescribeTo(os); |
453 *os << ") and effect ("; | 443 *os << ") and effect ("; |
454 effect_matcher_.DescribeTo(os); | 444 effect_matcher_.DescribeTo(os); |
455 *os << ") and control ("; | 445 *os << ") and control ("; |
456 control_matcher_.DescribeTo(os); | 446 control_matcher_.DescribeTo(os); |
457 *os << ")"; | 447 *os << ")"; |
458 } | 448 } |
459 | 449 |
460 virtual bool MatchAndExplain(Node* node, | 450 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
461 MatchResultListener* listener) const OVERRIDE { | |
462 return (NodeMatcher::MatchAndExplain(node, listener) && | 451 return (NodeMatcher::MatchAndExplain(node, listener) && |
463 PrintMatchAndExplain(OpParameter<CallDescriptor*>(node), | 452 PrintMatchAndExplain(OpParameter<CallDescriptor*>(node), |
464 "descriptor", descriptor_matcher_, listener) && | 453 "descriptor", descriptor_matcher_, listener) && |
465 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), | 454 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
466 "value0", value0_matcher_, listener) && | 455 "value0", value0_matcher_, listener) && |
467 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 456 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
468 "value1", value1_matcher_, listener) && | 457 "value1", value1_matcher_, listener) && |
469 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), | 458 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), |
470 "value2", value2_matcher_, listener) && | 459 "value2", value2_matcher_, listener) && |
471 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 3), | 460 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 3), |
(...skipping 20 matching lines...) Expand all Loading... |
492 IsLoadFieldMatcher(const Matcher<FieldAccess>& access_matcher, | 481 IsLoadFieldMatcher(const Matcher<FieldAccess>& access_matcher, |
493 const Matcher<Node*>& base_matcher, | 482 const Matcher<Node*>& base_matcher, |
494 const Matcher<Node*>& effect_matcher, | 483 const Matcher<Node*>& effect_matcher, |
495 const Matcher<Node*>& control_matcher) | 484 const Matcher<Node*>& control_matcher) |
496 : NodeMatcher(IrOpcode::kLoadField), | 485 : NodeMatcher(IrOpcode::kLoadField), |
497 access_matcher_(access_matcher), | 486 access_matcher_(access_matcher), |
498 base_matcher_(base_matcher), | 487 base_matcher_(base_matcher), |
499 effect_matcher_(effect_matcher), | 488 effect_matcher_(effect_matcher), |
500 control_matcher_(control_matcher) {} | 489 control_matcher_(control_matcher) {} |
501 | 490 |
502 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 491 void DescribeTo(std::ostream* os) const FINAL { |
503 NodeMatcher::DescribeTo(os); | 492 NodeMatcher::DescribeTo(os); |
504 *os << " whose access ("; | 493 *os << " whose access ("; |
505 access_matcher_.DescribeTo(os); | 494 access_matcher_.DescribeTo(os); |
506 *os << "), base ("; | 495 *os << "), base ("; |
507 base_matcher_.DescribeTo(os); | 496 base_matcher_.DescribeTo(os); |
508 *os << "), effect ("; | 497 *os << "), effect ("; |
509 effect_matcher_.DescribeTo(os); | 498 effect_matcher_.DescribeTo(os); |
510 *os << ") and control ("; | 499 *os << ") and control ("; |
511 control_matcher_.DescribeTo(os); | 500 control_matcher_.DescribeTo(os); |
512 *os << ")"; | 501 *os << ")"; |
513 } | 502 } |
514 | 503 |
515 virtual bool MatchAndExplain(Node* node, | 504 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
516 MatchResultListener* listener) const OVERRIDE { | |
517 return (NodeMatcher::MatchAndExplain(node, listener) && | 505 return (NodeMatcher::MatchAndExplain(node, listener) && |
518 PrintMatchAndExplain(OpParameter<FieldAccess>(node), "access", | 506 PrintMatchAndExplain(OpParameter<FieldAccess>(node), "access", |
519 access_matcher_, listener) && | 507 access_matcher_, listener) && |
520 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", | 508 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", |
521 base_matcher_, listener) && | 509 base_matcher_, listener) && |
522 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 510 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
523 effect_matcher_, listener) && | 511 effect_matcher_, listener) && |
524 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 512 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
525 "control", control_matcher_, listener)); | 513 "control", control_matcher_, listener)); |
526 } | 514 } |
(...skipping 13 matching lines...) Expand all Loading... |
540 const Matcher<Node*>& value_matcher, | 528 const Matcher<Node*>& value_matcher, |
541 const Matcher<Node*>& effect_matcher, | 529 const Matcher<Node*>& effect_matcher, |
542 const Matcher<Node*>& control_matcher) | 530 const Matcher<Node*>& control_matcher) |
543 : NodeMatcher(IrOpcode::kStoreField), | 531 : NodeMatcher(IrOpcode::kStoreField), |
544 access_matcher_(access_matcher), | 532 access_matcher_(access_matcher), |
545 base_matcher_(base_matcher), | 533 base_matcher_(base_matcher), |
546 value_matcher_(value_matcher), | 534 value_matcher_(value_matcher), |
547 effect_matcher_(effect_matcher), | 535 effect_matcher_(effect_matcher), |
548 control_matcher_(control_matcher) {} | 536 control_matcher_(control_matcher) {} |
549 | 537 |
550 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 538 void DescribeTo(std::ostream* os) const FINAL { |
551 NodeMatcher::DescribeTo(os); | 539 NodeMatcher::DescribeTo(os); |
552 *os << " whose access ("; | 540 *os << " whose access ("; |
553 access_matcher_.DescribeTo(os); | 541 access_matcher_.DescribeTo(os); |
554 *os << "), base ("; | 542 *os << "), base ("; |
555 base_matcher_.DescribeTo(os); | 543 base_matcher_.DescribeTo(os); |
556 *os << "), value ("; | 544 *os << "), value ("; |
557 value_matcher_.DescribeTo(os); | 545 value_matcher_.DescribeTo(os); |
558 *os << "), effect ("; | 546 *os << "), effect ("; |
559 effect_matcher_.DescribeTo(os); | 547 effect_matcher_.DescribeTo(os); |
560 *os << ") and control ("; | 548 *os << ") and control ("; |
561 control_matcher_.DescribeTo(os); | 549 control_matcher_.DescribeTo(os); |
562 *os << ")"; | 550 *os << ")"; |
563 } | 551 } |
564 | 552 |
565 virtual bool MatchAndExplain(Node* node, | 553 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
566 MatchResultListener* listener) const OVERRIDE { | |
567 return (NodeMatcher::MatchAndExplain(node, listener) && | 554 return (NodeMatcher::MatchAndExplain(node, listener) && |
568 PrintMatchAndExplain(OpParameter<FieldAccess>(node), "access", | 555 PrintMatchAndExplain(OpParameter<FieldAccess>(node), "access", |
569 access_matcher_, listener) && | 556 access_matcher_, listener) && |
570 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", | 557 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", |
571 base_matcher_, listener) && | 558 base_matcher_, listener) && |
572 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 559 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
573 "value", value_matcher_, listener) && | 560 "value", value_matcher_, listener) && |
574 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 561 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
575 effect_matcher_, listener) && | 562 effect_matcher_, listener) && |
576 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 563 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
(...skipping 18 matching lines...) Expand all Loading... |
595 const Matcher<Node*>& effect_matcher, | 582 const Matcher<Node*>& effect_matcher, |
596 const Matcher<Node*>& control_matcher) | 583 const Matcher<Node*>& control_matcher) |
597 : NodeMatcher(IrOpcode::kLoadBuffer), | 584 : NodeMatcher(IrOpcode::kLoadBuffer), |
598 access_matcher_(access_matcher), | 585 access_matcher_(access_matcher), |
599 buffer_matcher_(buffer_matcher), | 586 buffer_matcher_(buffer_matcher), |
600 offset_matcher_(offset_matcher), | 587 offset_matcher_(offset_matcher), |
601 length_matcher_(length_matcher), | 588 length_matcher_(length_matcher), |
602 effect_matcher_(effect_matcher), | 589 effect_matcher_(effect_matcher), |
603 control_matcher_(control_matcher) {} | 590 control_matcher_(control_matcher) {} |
604 | 591 |
605 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 592 void DescribeTo(std::ostream* os) const FINAL { |
606 NodeMatcher::DescribeTo(os); | 593 NodeMatcher::DescribeTo(os); |
607 *os << " whose access ("; | 594 *os << " whose access ("; |
608 access_matcher_.DescribeTo(os); | 595 access_matcher_.DescribeTo(os); |
609 *os << "), buffer ("; | 596 *os << "), buffer ("; |
610 buffer_matcher_.DescribeTo(os); | 597 buffer_matcher_.DescribeTo(os); |
611 *os << "), offset ("; | 598 *os << "), offset ("; |
612 offset_matcher_.DescribeTo(os); | 599 offset_matcher_.DescribeTo(os); |
613 *os << "), length ("; | 600 *os << "), length ("; |
614 length_matcher_.DescribeTo(os); | 601 length_matcher_.DescribeTo(os); |
615 *os << "), effect ("; | 602 *os << "), effect ("; |
616 effect_matcher_.DescribeTo(os); | 603 effect_matcher_.DescribeTo(os); |
617 *os << ") and control ("; | 604 *os << ") and control ("; |
618 control_matcher_.DescribeTo(os); | 605 control_matcher_.DescribeTo(os); |
619 *os << ")"; | 606 *os << ")"; |
620 } | 607 } |
621 | 608 |
622 virtual bool MatchAndExplain(Node* node, | 609 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
623 MatchResultListener* listener) const OVERRIDE { | |
624 return (NodeMatcher::MatchAndExplain(node, listener) && | 610 return (NodeMatcher::MatchAndExplain(node, listener) && |
625 PrintMatchAndExplain(BufferAccessOf(node->op()), "access", | 611 PrintMatchAndExplain(BufferAccessOf(node->op()), "access", |
626 access_matcher_, listener) && | 612 access_matcher_, listener) && |
627 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), | 613 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
628 "buffer", buffer_matcher_, listener) && | 614 "buffer", buffer_matcher_, listener) && |
629 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 615 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
630 "offset", offset_matcher_, listener) && | 616 "offset", offset_matcher_, listener) && |
631 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), | 617 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), |
632 "length", length_matcher_, listener) && | 618 "length", length_matcher_, listener) && |
633 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 619 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
(...skipping 23 matching lines...) Expand all Loading... |
657 const Matcher<Node*>& control_matcher) | 643 const Matcher<Node*>& control_matcher) |
658 : NodeMatcher(IrOpcode::kStoreBuffer), | 644 : NodeMatcher(IrOpcode::kStoreBuffer), |
659 access_matcher_(access_matcher), | 645 access_matcher_(access_matcher), |
660 buffer_matcher_(buffer_matcher), | 646 buffer_matcher_(buffer_matcher), |
661 offset_matcher_(offset_matcher), | 647 offset_matcher_(offset_matcher), |
662 length_matcher_(length_matcher), | 648 length_matcher_(length_matcher), |
663 value_matcher_(value_matcher), | 649 value_matcher_(value_matcher), |
664 effect_matcher_(effect_matcher), | 650 effect_matcher_(effect_matcher), |
665 control_matcher_(control_matcher) {} | 651 control_matcher_(control_matcher) {} |
666 | 652 |
667 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 653 void DescribeTo(std::ostream* os) const FINAL { |
668 NodeMatcher::DescribeTo(os); | 654 NodeMatcher::DescribeTo(os); |
669 *os << " whose access ("; | 655 *os << " whose access ("; |
670 access_matcher_.DescribeTo(os); | 656 access_matcher_.DescribeTo(os); |
671 *os << "), buffer ("; | 657 *os << "), buffer ("; |
672 buffer_matcher_.DescribeTo(os); | 658 buffer_matcher_.DescribeTo(os); |
673 *os << "), offset ("; | 659 *os << "), offset ("; |
674 offset_matcher_.DescribeTo(os); | 660 offset_matcher_.DescribeTo(os); |
675 *os << "), length ("; | 661 *os << "), length ("; |
676 length_matcher_.DescribeTo(os); | 662 length_matcher_.DescribeTo(os); |
677 *os << "), value ("; | 663 *os << "), value ("; |
678 value_matcher_.DescribeTo(os); | 664 value_matcher_.DescribeTo(os); |
679 *os << "), effect ("; | 665 *os << "), effect ("; |
680 effect_matcher_.DescribeTo(os); | 666 effect_matcher_.DescribeTo(os); |
681 *os << ") and control ("; | 667 *os << ") and control ("; |
682 control_matcher_.DescribeTo(os); | 668 control_matcher_.DescribeTo(os); |
683 *os << ")"; | 669 *os << ")"; |
684 } | 670 } |
685 | 671 |
686 virtual bool MatchAndExplain(Node* node, | 672 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
687 MatchResultListener* listener) const OVERRIDE { | |
688 return (NodeMatcher::MatchAndExplain(node, listener) && | 673 return (NodeMatcher::MatchAndExplain(node, listener) && |
689 PrintMatchAndExplain(BufferAccessOf(node->op()), "access", | 674 PrintMatchAndExplain(BufferAccessOf(node->op()), "access", |
690 access_matcher_, listener) && | 675 access_matcher_, listener) && |
691 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), | 676 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
692 "buffer", buffer_matcher_, listener) && | 677 "buffer", buffer_matcher_, listener) && |
693 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 678 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
694 "offset", offset_matcher_, listener) && | 679 "offset", offset_matcher_, listener) && |
695 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), | 680 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), |
696 "length", length_matcher_, listener) && | 681 "length", length_matcher_, listener) && |
697 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 3), | 682 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 3), |
(...skipping 22 matching lines...) Expand all Loading... |
720 const Matcher<Node*>& index_matcher, | 705 const Matcher<Node*>& index_matcher, |
721 const Matcher<Node*>& effect_matcher, | 706 const Matcher<Node*>& effect_matcher, |
722 const Matcher<Node*>& control_matcher) | 707 const Matcher<Node*>& control_matcher) |
723 : NodeMatcher(IrOpcode::kLoadElement), | 708 : NodeMatcher(IrOpcode::kLoadElement), |
724 access_matcher_(access_matcher), | 709 access_matcher_(access_matcher), |
725 base_matcher_(base_matcher), | 710 base_matcher_(base_matcher), |
726 index_matcher_(index_matcher), | 711 index_matcher_(index_matcher), |
727 effect_matcher_(effect_matcher), | 712 effect_matcher_(effect_matcher), |
728 control_matcher_(control_matcher) {} | 713 control_matcher_(control_matcher) {} |
729 | 714 |
730 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 715 void DescribeTo(std::ostream* os) const FINAL { |
731 NodeMatcher::DescribeTo(os); | 716 NodeMatcher::DescribeTo(os); |
732 *os << " whose access ("; | 717 *os << " whose access ("; |
733 access_matcher_.DescribeTo(os); | 718 access_matcher_.DescribeTo(os); |
734 *os << "), base ("; | 719 *os << "), base ("; |
735 base_matcher_.DescribeTo(os); | 720 base_matcher_.DescribeTo(os); |
736 *os << "), index ("; | 721 *os << "), index ("; |
737 index_matcher_.DescribeTo(os); | 722 index_matcher_.DescribeTo(os); |
738 *os << "), effect ("; | 723 *os << "), effect ("; |
739 effect_matcher_.DescribeTo(os); | 724 effect_matcher_.DescribeTo(os); |
740 *os << ") and control ("; | 725 *os << ") and control ("; |
741 control_matcher_.DescribeTo(os); | 726 control_matcher_.DescribeTo(os); |
742 *os << ")"; | 727 *os << ")"; |
743 } | 728 } |
744 | 729 |
745 virtual bool MatchAndExplain(Node* node, | 730 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
746 MatchResultListener* listener) const OVERRIDE { | |
747 return (NodeMatcher::MatchAndExplain(node, listener) && | 731 return (NodeMatcher::MatchAndExplain(node, listener) && |
748 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access", | 732 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access", |
749 access_matcher_, listener) && | 733 access_matcher_, listener) && |
750 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", | 734 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", |
751 base_matcher_, listener) && | 735 base_matcher_, listener) && |
752 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 736 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
753 "index", index_matcher_, listener) && | 737 "index", index_matcher_, listener) && |
754 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 738 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
755 effect_matcher_, listener) && | 739 effect_matcher_, listener) && |
756 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 740 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
(...skipping 18 matching lines...) Expand all Loading... |
775 const Matcher<Node*>& effect_matcher, | 759 const Matcher<Node*>& effect_matcher, |
776 const Matcher<Node*>& control_matcher) | 760 const Matcher<Node*>& control_matcher) |
777 : NodeMatcher(IrOpcode::kStoreElement), | 761 : NodeMatcher(IrOpcode::kStoreElement), |
778 access_matcher_(access_matcher), | 762 access_matcher_(access_matcher), |
779 base_matcher_(base_matcher), | 763 base_matcher_(base_matcher), |
780 index_matcher_(index_matcher), | 764 index_matcher_(index_matcher), |
781 value_matcher_(value_matcher), | 765 value_matcher_(value_matcher), |
782 effect_matcher_(effect_matcher), | 766 effect_matcher_(effect_matcher), |
783 control_matcher_(control_matcher) {} | 767 control_matcher_(control_matcher) {} |
784 | 768 |
785 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 769 void DescribeTo(std::ostream* os) const FINAL { |
786 NodeMatcher::DescribeTo(os); | 770 NodeMatcher::DescribeTo(os); |
787 *os << " whose access ("; | 771 *os << " whose access ("; |
788 access_matcher_.DescribeTo(os); | 772 access_matcher_.DescribeTo(os); |
789 *os << "), base ("; | 773 *os << "), base ("; |
790 base_matcher_.DescribeTo(os); | 774 base_matcher_.DescribeTo(os); |
791 *os << "), index ("; | 775 *os << "), index ("; |
792 index_matcher_.DescribeTo(os); | 776 index_matcher_.DescribeTo(os); |
793 *os << "), value ("; | 777 *os << "), value ("; |
794 value_matcher_.DescribeTo(os); | 778 value_matcher_.DescribeTo(os); |
795 *os << "), effect ("; | 779 *os << "), effect ("; |
796 effect_matcher_.DescribeTo(os); | 780 effect_matcher_.DescribeTo(os); |
797 *os << ") and control ("; | 781 *os << ") and control ("; |
798 control_matcher_.DescribeTo(os); | 782 control_matcher_.DescribeTo(os); |
799 *os << ")"; | 783 *os << ")"; |
800 } | 784 } |
801 | 785 |
802 virtual bool MatchAndExplain(Node* node, | 786 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
803 MatchResultListener* listener) const OVERRIDE { | |
804 return (NodeMatcher::MatchAndExplain(node, listener) && | 787 return (NodeMatcher::MatchAndExplain(node, listener) && |
805 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access", | 788 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access", |
806 access_matcher_, listener) && | 789 access_matcher_, listener) && |
807 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", | 790 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", |
808 base_matcher_, listener) && | 791 base_matcher_, listener) && |
809 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 792 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
810 "index", index_matcher_, listener) && | 793 "index", index_matcher_, listener) && |
811 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), | 794 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), |
812 "value", value_matcher_, listener) && | 795 "value", value_matcher_, listener) && |
813 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 796 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
(...skipping 19 matching lines...) Expand all Loading... |
833 const Matcher<Node*>& index_matcher, | 816 const Matcher<Node*>& index_matcher, |
834 const Matcher<Node*>& effect_matcher, | 817 const Matcher<Node*>& effect_matcher, |
835 const Matcher<Node*>& control_matcher) | 818 const Matcher<Node*>& control_matcher) |
836 : NodeMatcher(IrOpcode::kLoad), | 819 : NodeMatcher(IrOpcode::kLoad), |
837 rep_matcher_(rep_matcher), | 820 rep_matcher_(rep_matcher), |
838 base_matcher_(base_matcher), | 821 base_matcher_(base_matcher), |
839 index_matcher_(index_matcher), | 822 index_matcher_(index_matcher), |
840 effect_matcher_(effect_matcher), | 823 effect_matcher_(effect_matcher), |
841 control_matcher_(control_matcher) {} | 824 control_matcher_(control_matcher) {} |
842 | 825 |
843 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 826 void DescribeTo(std::ostream* os) const FINAL { |
844 NodeMatcher::DescribeTo(os); | 827 NodeMatcher::DescribeTo(os); |
845 *os << " whose rep ("; | 828 *os << " whose rep ("; |
846 rep_matcher_.DescribeTo(os); | 829 rep_matcher_.DescribeTo(os); |
847 *os << "), base ("; | 830 *os << "), base ("; |
848 base_matcher_.DescribeTo(os); | 831 base_matcher_.DescribeTo(os); |
849 *os << "), index ("; | 832 *os << "), index ("; |
850 index_matcher_.DescribeTo(os); | 833 index_matcher_.DescribeTo(os); |
851 *os << "), effect ("; | 834 *os << "), effect ("; |
852 effect_matcher_.DescribeTo(os); | 835 effect_matcher_.DescribeTo(os); |
853 *os << ") and control ("; | 836 *os << ") and control ("; |
854 control_matcher_.DescribeTo(os); | 837 control_matcher_.DescribeTo(os); |
855 *os << ")"; | 838 *os << ")"; |
856 } | 839 } |
857 | 840 |
858 virtual bool MatchAndExplain(Node* node, | 841 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
859 MatchResultListener* listener) const OVERRIDE { | |
860 return (NodeMatcher::MatchAndExplain(node, listener) && | 842 return (NodeMatcher::MatchAndExplain(node, listener) && |
861 PrintMatchAndExplain(OpParameter<LoadRepresentation>(node), "rep", | 843 PrintMatchAndExplain(OpParameter<LoadRepresentation>(node), "rep", |
862 rep_matcher_, listener) && | 844 rep_matcher_, listener) && |
863 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", | 845 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", |
864 base_matcher_, listener) && | 846 base_matcher_, listener) && |
865 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 847 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
866 "index", index_matcher_, listener) && | 848 "index", index_matcher_, listener) && |
867 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 849 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
868 effect_matcher_, listener) && | 850 effect_matcher_, listener) && |
869 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 851 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
(...skipping 14 matching lines...) Expand all Loading... |
884 IsToNumberMatcher(const Matcher<Node*>& base_matcher, | 866 IsToNumberMatcher(const Matcher<Node*>& base_matcher, |
885 const Matcher<Node*>& context_matcher, | 867 const Matcher<Node*>& context_matcher, |
886 const Matcher<Node*>& effect_matcher, | 868 const Matcher<Node*>& effect_matcher, |
887 const Matcher<Node*>& control_matcher) | 869 const Matcher<Node*>& control_matcher) |
888 : NodeMatcher(IrOpcode::kJSToNumber), | 870 : NodeMatcher(IrOpcode::kJSToNumber), |
889 base_matcher_(base_matcher), | 871 base_matcher_(base_matcher), |
890 context_matcher_(context_matcher), | 872 context_matcher_(context_matcher), |
891 effect_matcher_(effect_matcher), | 873 effect_matcher_(effect_matcher), |
892 control_matcher_(control_matcher) {} | 874 control_matcher_(control_matcher) {} |
893 | 875 |
894 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 876 void DescribeTo(std::ostream* os) const FINAL { |
895 NodeMatcher::DescribeTo(os); | 877 NodeMatcher::DescribeTo(os); |
896 *os << " whose base ("; | 878 *os << " whose base ("; |
897 base_matcher_.DescribeTo(os); | 879 base_matcher_.DescribeTo(os); |
898 *os << "), context ("; | 880 *os << "), context ("; |
899 context_matcher_.DescribeTo(os); | 881 context_matcher_.DescribeTo(os); |
900 *os << "), effect ("; | 882 *os << "), effect ("; |
901 effect_matcher_.DescribeTo(os); | 883 effect_matcher_.DescribeTo(os); |
902 *os << ") and control ("; | 884 *os << ") and control ("; |
903 control_matcher_.DescribeTo(os); | 885 control_matcher_.DescribeTo(os); |
904 *os << ")"; | 886 *os << ")"; |
905 } | 887 } |
906 | 888 |
907 virtual bool MatchAndExplain(Node* node, | 889 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
908 MatchResultListener* listener) const OVERRIDE { | |
909 return (NodeMatcher::MatchAndExplain(node, listener) && | 890 return (NodeMatcher::MatchAndExplain(node, listener) && |
910 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", | 891 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", |
911 base_matcher_, listener) && | 892 base_matcher_, listener) && |
912 PrintMatchAndExplain(NodeProperties::GetContextInput(node), | 893 PrintMatchAndExplain(NodeProperties::GetContextInput(node), |
913 "context", context_matcher_, listener) && | 894 "context", context_matcher_, listener) && |
914 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 895 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
915 effect_matcher_, listener) && | 896 effect_matcher_, listener) && |
916 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 897 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
917 "control", control_matcher_, listener)); | 898 "control", control_matcher_, listener)); |
918 } | 899 } |
(...skipping 15 matching lines...) Expand all Loading... |
934 const Matcher<Node*>& effect_matcher, | 915 const Matcher<Node*>& effect_matcher, |
935 const Matcher<Node*>& control_matcher) | 916 const Matcher<Node*>& control_matcher) |
936 : NodeMatcher(IrOpcode::kStore), | 917 : NodeMatcher(IrOpcode::kStore), |
937 rep_matcher_(rep_matcher), | 918 rep_matcher_(rep_matcher), |
938 base_matcher_(base_matcher), | 919 base_matcher_(base_matcher), |
939 index_matcher_(index_matcher), | 920 index_matcher_(index_matcher), |
940 value_matcher_(value_matcher), | 921 value_matcher_(value_matcher), |
941 effect_matcher_(effect_matcher), | 922 effect_matcher_(effect_matcher), |
942 control_matcher_(control_matcher) {} | 923 control_matcher_(control_matcher) {} |
943 | 924 |
944 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 925 void DescribeTo(std::ostream* os) const FINAL { |
945 NodeMatcher::DescribeTo(os); | 926 NodeMatcher::DescribeTo(os); |
946 *os << " whose rep ("; | 927 *os << " whose rep ("; |
947 rep_matcher_.DescribeTo(os); | 928 rep_matcher_.DescribeTo(os); |
948 *os << "), base ("; | 929 *os << "), base ("; |
949 base_matcher_.DescribeTo(os); | 930 base_matcher_.DescribeTo(os); |
950 *os << "), index ("; | 931 *os << "), index ("; |
951 index_matcher_.DescribeTo(os); | 932 index_matcher_.DescribeTo(os); |
952 *os << "), value ("; | 933 *os << "), value ("; |
953 value_matcher_.DescribeTo(os); | 934 value_matcher_.DescribeTo(os); |
954 *os << "), effect ("; | 935 *os << "), effect ("; |
955 effect_matcher_.DescribeTo(os); | 936 effect_matcher_.DescribeTo(os); |
956 *os << ") and control ("; | 937 *os << ") and control ("; |
957 control_matcher_.DescribeTo(os); | 938 control_matcher_.DescribeTo(os); |
958 *os << ")"; | 939 *os << ")"; |
959 } | 940 } |
960 | 941 |
961 virtual bool MatchAndExplain(Node* node, | 942 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
962 MatchResultListener* listener) const OVERRIDE { | |
963 return (NodeMatcher::MatchAndExplain(node, listener) && | 943 return (NodeMatcher::MatchAndExplain(node, listener) && |
964 PrintMatchAndExplain(OpParameter<StoreRepresentation>(node), "rep", | 944 PrintMatchAndExplain(OpParameter<StoreRepresentation>(node), "rep", |
965 rep_matcher_, listener) && | 945 rep_matcher_, listener) && |
966 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", | 946 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", |
967 base_matcher_, listener) && | 947 base_matcher_, listener) && |
968 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 948 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
969 "index", index_matcher_, listener) && | 949 "index", index_matcher_, listener) && |
970 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), | 950 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), |
971 "value", value_matcher_, listener) && | 951 "value", value_matcher_, listener) && |
972 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 952 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
(...skipping 13 matching lines...) Expand all Loading... |
986 | 966 |
987 | 967 |
988 class IsBinopMatcher FINAL : public NodeMatcher { | 968 class IsBinopMatcher FINAL : public NodeMatcher { |
989 public: | 969 public: |
990 IsBinopMatcher(IrOpcode::Value opcode, const Matcher<Node*>& lhs_matcher, | 970 IsBinopMatcher(IrOpcode::Value opcode, const Matcher<Node*>& lhs_matcher, |
991 const Matcher<Node*>& rhs_matcher) | 971 const Matcher<Node*>& rhs_matcher) |
992 : NodeMatcher(opcode), | 972 : NodeMatcher(opcode), |
993 lhs_matcher_(lhs_matcher), | 973 lhs_matcher_(lhs_matcher), |
994 rhs_matcher_(rhs_matcher) {} | 974 rhs_matcher_(rhs_matcher) {} |
995 | 975 |
996 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 976 void DescribeTo(std::ostream* os) const FINAL { |
997 NodeMatcher::DescribeTo(os); | 977 NodeMatcher::DescribeTo(os); |
998 *os << " whose lhs ("; | 978 *os << " whose lhs ("; |
999 lhs_matcher_.DescribeTo(os); | 979 lhs_matcher_.DescribeTo(os); |
1000 *os << ") and rhs ("; | 980 *os << ") and rhs ("; |
1001 rhs_matcher_.DescribeTo(os); | 981 rhs_matcher_.DescribeTo(os); |
1002 *os << ")"; | 982 *os << ")"; |
1003 } | 983 } |
1004 | 984 |
1005 virtual bool MatchAndExplain(Node* node, | 985 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
1006 MatchResultListener* listener) const OVERRIDE { | |
1007 return (NodeMatcher::MatchAndExplain(node, listener) && | 986 return (NodeMatcher::MatchAndExplain(node, listener) && |
1008 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "lhs", | 987 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "lhs", |
1009 lhs_matcher_, listener) && | 988 lhs_matcher_, listener) && |
1010 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), "rhs", | 989 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), "rhs", |
1011 rhs_matcher_, listener)); | 990 rhs_matcher_, listener)); |
1012 } | 991 } |
1013 | 992 |
1014 private: | 993 private: |
1015 const Matcher<Node*> lhs_matcher_; | 994 const Matcher<Node*> lhs_matcher_; |
1016 const Matcher<Node*> rhs_matcher_; | 995 const Matcher<Node*> rhs_matcher_; |
1017 }; | 996 }; |
1018 | 997 |
1019 | 998 |
1020 class IsUnopMatcher FINAL : public NodeMatcher { | 999 class IsUnopMatcher FINAL : public NodeMatcher { |
1021 public: | 1000 public: |
1022 IsUnopMatcher(IrOpcode::Value opcode, const Matcher<Node*>& input_matcher) | 1001 IsUnopMatcher(IrOpcode::Value opcode, const Matcher<Node*>& input_matcher) |
1023 : NodeMatcher(opcode), input_matcher_(input_matcher) {} | 1002 : NodeMatcher(opcode), input_matcher_(input_matcher) {} |
1024 | 1003 |
1025 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 1004 void DescribeTo(std::ostream* os) const FINAL { |
1026 NodeMatcher::DescribeTo(os); | 1005 NodeMatcher::DescribeTo(os); |
1027 *os << " whose input ("; | 1006 *os << " whose input ("; |
1028 input_matcher_.DescribeTo(os); | 1007 input_matcher_.DescribeTo(os); |
1029 *os << ")"; | 1008 *os << ")"; |
1030 } | 1009 } |
1031 | 1010 |
1032 virtual bool MatchAndExplain(Node* node, | 1011 bool MatchAndExplain(Node* node, MatchResultListener* listener) const FINAL { |
1033 MatchResultListener* listener) const OVERRIDE { | |
1034 return (NodeMatcher::MatchAndExplain(node, listener) && | 1012 return (NodeMatcher::MatchAndExplain(node, listener) && |
1035 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), | 1013 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
1036 "input", input_matcher_, listener)); | 1014 "input", input_matcher_, listener)); |
1037 } | 1015 } |
1038 | 1016 |
1039 private: | 1017 private: |
1040 const Matcher<Node*> input_matcher_; | 1018 const Matcher<Node*> input_matcher_; |
1041 }; | 1019 }; |
1042 } | 1020 } |
1043 | 1021 |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1326 IS_UNOP_MATCHER(Float64Ceil) | 1304 IS_UNOP_MATCHER(Float64Ceil) |
1327 IS_UNOP_MATCHER(Float64RoundTruncate) | 1305 IS_UNOP_MATCHER(Float64RoundTruncate) |
1328 IS_UNOP_MATCHER(Float64RoundTiesAway) | 1306 IS_UNOP_MATCHER(Float64RoundTiesAway) |
1329 IS_UNOP_MATCHER(NumberToInt32) | 1307 IS_UNOP_MATCHER(NumberToInt32) |
1330 IS_UNOP_MATCHER(NumberToUint32) | 1308 IS_UNOP_MATCHER(NumberToUint32) |
1331 #undef IS_UNOP_MATCHER | 1309 #undef IS_UNOP_MATCHER |
1332 | 1310 |
1333 } // namespace compiler | 1311 } // namespace compiler |
1334 } // namespace internal | 1312 } // namespace internal |
1335 } // namespace v8 | 1313 } // namespace v8 |
OLD | NEW |