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

Side by Side Diff: test/unittests/compiler/js-context-relaxation-unittest.cc

Issue 1366543003: Reland "[turbofan] Checking of input counts on node creation" (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix Created 5 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
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 "src/compiler/js-context-relaxation.h" 5 #include "src/compiler/js-context-relaxation.h"
6 #include "src/compiler/js-graph.h" 6 #include "src/compiler/js-graph.h"
7 #include "test/unittests/compiler/graph-unittest.h" 7 #include "test/unittests/compiler/graph-unittest.h"
8 #include "test/unittests/compiler/node-test-utils.h" 8 #include "test/unittests/compiler/node-test-utils.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 EXPECT_EQ(context, NodeProperties::GetContextInput(node)); 146 EXPECT_EQ(context, NodeProperties::GetContextInput(node));
147 } 147 }
148 148
149 TEST_F(JSContextRelaxationTest, 149 TEST_F(JSContextRelaxationTest,
150 RelaxJSCallFunctionDeepContextChainFullRelaxForCatch) { 150 RelaxJSCallFunctionDeepContextChainFullRelaxForCatch) {
151 Node* const input0 = Parameter(0); 151 Node* const input0 = Parameter(0);
152 Node* const input1 = Parameter(1); 152 Node* const input1 = Parameter(1);
153 Node* const context = Parameter(2); 153 Node* const context = Parameter(2);
154 Node* const outer_context = Parameter(3); 154 Node* const outer_context = Parameter(3);
155 const Operator* op = javascript()->CreateCatchContext(Handle<String>()); 155 const Operator* op = javascript()->CreateCatchContext(Handle<String>());
156 Node* const frame_state_1 =
157 ShallowFrameStateChain(outer_context, CALL_MAINTAINS_NATIVE_CONTEXT);
158 Node* const effect = graph()->start(); 156 Node* const effect = graph()->start();
159 Node* const control = graph()->start(); 157 Node* const control = graph()->start();
160 Node* nested_context = 158 Node* nested_context = graph()->NewNode(
161 graph()->NewNode(op, graph()->start(), graph()->start(), outer_context, 159 op, graph()->start(), graph()->start(), outer_context, effect, control);
162 frame_state_1, effect, control);
163 Node* const frame_state_2 = 160 Node* const frame_state_2 =
164 ShallowFrameStateChain(nested_context, CALL_MAINTAINS_NATIVE_CONTEXT); 161 ShallowFrameStateChain(nested_context, CALL_MAINTAINS_NATIVE_CONTEXT);
165 Node* node = 162 Node* node =
166 graph()->NewNode(javascript()->CallFunction(2, NO_CALL_FUNCTION_FLAGS, 163 graph()->NewNode(javascript()->CallFunction(2, NO_CALL_FUNCTION_FLAGS,
167 STRICT, VectorSlotPair()), 164 STRICT, VectorSlotPair()),
168 input0, input1, context, frame_state_2, effect, control); 165 input0, input1, context, frame_state_2, effect, control);
169 Reduction const r = Reduce(node); 166 Reduction const r = Reduce(node);
170 EXPECT_TRUE(r.Changed()); 167 EXPECT_TRUE(r.Changed());
171 EXPECT_EQ(outer_context, NodeProperties::GetContextInput(node)); 168 EXPECT_EQ(outer_context, NodeProperties::GetContextInput(node));
172 } 169 }
(...skipping 25 matching lines...) Expand all
198 } 195 }
199 196
200 197
201 TEST_F(JSContextRelaxationTest, 198 TEST_F(JSContextRelaxationTest,
202 RelaxJSCallFunctionDeepContextChainFullRelaxForBlock) { 199 RelaxJSCallFunctionDeepContextChainFullRelaxForBlock) {
203 Node* const input0 = Parameter(0); 200 Node* const input0 = Parameter(0);
204 Node* const input1 = Parameter(1); 201 Node* const input1 = Parameter(1);
205 Node* const context = Parameter(2); 202 Node* const context = Parameter(2);
206 Node* const outer_context = Parameter(3); 203 Node* const outer_context = Parameter(3);
207 const Operator* op = javascript()->CreateBlockContext(); 204 const Operator* op = javascript()->CreateBlockContext();
208 Node* const frame_state_1 =
209 ShallowFrameStateChain(outer_context, CALL_MAINTAINS_NATIVE_CONTEXT);
210 Node* const effect = graph()->start(); 205 Node* const effect = graph()->start();
211 Node* const control = graph()->start(); 206 Node* const control = graph()->start();
212 Node* nested_context = 207 Node* nested_context = graph()->NewNode(
213 graph()->NewNode(op, graph()->start(), graph()->start(), outer_context, 208 op, graph()->start(), graph()->start(), outer_context, effect, control);
214 frame_state_1, effect, control);
215 Node* const frame_state_2 = 209 Node* const frame_state_2 =
216 ShallowFrameStateChain(nested_context, CALL_MAINTAINS_NATIVE_CONTEXT); 210 ShallowFrameStateChain(nested_context, CALL_MAINTAINS_NATIVE_CONTEXT);
217 Node* node = 211 Node* node =
218 graph()->NewNode(javascript()->CallFunction(2, NO_CALL_FUNCTION_FLAGS, 212 graph()->NewNode(javascript()->CallFunction(2, NO_CALL_FUNCTION_FLAGS,
219 STRICT, VectorSlotPair()), 213 STRICT, VectorSlotPair()),
220 input0, input1, context, frame_state_2, effect, control); 214 input0, input1, context, frame_state_2, effect, control);
221 Reduction const r = Reduce(node); 215 Reduction const r = Reduce(node);
222 EXPECT_TRUE(r.Changed()); 216 EXPECT_TRUE(r.Changed());
223 EXPECT_EQ(outer_context, NodeProperties::GetContextInput(node)); 217 EXPECT_EQ(outer_context, NodeProperties::GetContextInput(node));
224 } 218 }
(...skipping 25 matching lines...) Expand all
250 } 244 }
251 245
252 246
253 TEST_F(JSContextRelaxationTest, 247 TEST_F(JSContextRelaxationTest,
254 RelaxJSCallFunctionDeepContextChainPartialRelaxForModule) { 248 RelaxJSCallFunctionDeepContextChainPartialRelaxForModule) {
255 Node* const input0 = Parameter(0); 249 Node* const input0 = Parameter(0);
256 Node* const input1 = Parameter(1); 250 Node* const input1 = Parameter(1);
257 Node* const context = Parameter(2); 251 Node* const context = Parameter(2);
258 Node* const outer_context = Parameter(3); 252 Node* const outer_context = Parameter(3);
259 const Operator* op = javascript()->CreateModuleContext(); 253 const Operator* op = javascript()->CreateModuleContext();
260 Node* const frame_state_1 =
261 ShallowFrameStateChain(outer_context, CALL_MAINTAINS_NATIVE_CONTEXT);
262 Node* const effect = graph()->start(); 254 Node* const effect = graph()->start();
263 Node* const control = graph()->start(); 255 Node* const control = graph()->start();
264 Node* nested_context = 256 Node* nested_context = graph()->NewNode(
265 graph()->NewNode(op, graph()->start(), graph()->start(), outer_context, 257 op, graph()->start(), graph()->start(), outer_context, effect, control);
266 frame_state_1, effect, control);
267 Node* const frame_state_2 = 258 Node* const frame_state_2 =
268 ShallowFrameStateChain(nested_context, CALL_MAINTAINS_NATIVE_CONTEXT); 259 ShallowFrameStateChain(nested_context, CALL_MAINTAINS_NATIVE_CONTEXT);
269 Node* node = 260 Node* node =
270 graph()->NewNode(javascript()->CallFunction(2, NO_CALL_FUNCTION_FLAGS, 261 graph()->NewNode(javascript()->CallFunction(2, NO_CALL_FUNCTION_FLAGS,
271 STRICT, VectorSlotPair()), 262 STRICT, VectorSlotPair()),
272 input0, input1, context, frame_state_2, effect, control); 263 input0, input1, context, frame_state_2, effect, control);
273 Reduction const r = Reduce(node); 264 Reduction const r = Reduce(node);
274 EXPECT_TRUE(r.Changed()); 265 EXPECT_TRUE(r.Changed());
275 EXPECT_EQ(nested_context, NodeProperties::GetContextInput(node)); 266 EXPECT_EQ(nested_context, NodeProperties::GetContextInput(node));
276 } 267 }
277 268
278 269
279 TEST_F(JSContextRelaxationTest, 270 TEST_F(JSContextRelaxationTest,
280 RelaxJSCallFunctionDeepContextChainPartialNoRelax) { 271 RelaxJSCallFunctionDeepContextChainPartialNoRelax) {
281 Node* const input0 = Parameter(0); 272 Node* const input0 = Parameter(0);
282 Node* const input1 = Parameter(1); 273 Node* const input1 = Parameter(1);
283 Node* const context = Parameter(2); 274 Node* const context = Parameter(2);
284 Node* const outer_context = Parameter(3); 275 Node* const outer_context = Parameter(3);
285 const Operator* op = javascript()->CreateFunctionContext(); 276 const Operator* op = javascript()->CreateFunctionContext();
286 Node* const frame_state_1 =
287 ShallowFrameStateChain(outer_context, CALL_MAINTAINS_NATIVE_CONTEXT);
288 Node* const effect = graph()->start(); 277 Node* const effect = graph()->start();
289 Node* const control = graph()->start(); 278 Node* const control = graph()->start();
290 Node* nested_context = 279 Node* nested_context =
291 graph()->NewNode(op, graph()->start(), graph()->start(), outer_context, 280 graph()->NewNode(op, graph()->start(), outer_context, effect, control);
292 frame_state_1, effect, control);
293 Node* const frame_state_2 = 281 Node* const frame_state_2 =
294 ShallowFrameStateChain(nested_context, CALL_MAINTAINS_NATIVE_CONTEXT); 282 ShallowFrameStateChain(nested_context, CALL_MAINTAINS_NATIVE_CONTEXT);
295 Node* node = 283 Node* node =
296 graph()->NewNode(javascript()->CallFunction(2, NO_CALL_FUNCTION_FLAGS, 284 graph()->NewNode(javascript()->CallFunction(2, NO_CALL_FUNCTION_FLAGS,
297 STRICT, VectorSlotPair()), 285 STRICT, VectorSlotPair()),
298 input0, input1, context, frame_state_2, effect, control); 286 input0, input1, context, frame_state_2, effect, control);
299 Reduction const r = Reduce(node); 287 Reduction const r = Reduce(node);
300 EXPECT_FALSE(r.Changed()); 288 EXPECT_FALSE(r.Changed());
301 EXPECT_EQ(context, NodeProperties::GetContextInput(node)); 289 EXPECT_EQ(context, NodeProperties::GetContextInput(node));
302 } 290 }
303 291
304 } // namespace compiler 292 } // namespace compiler
305 } // namespace internal 293 } // namespace internal
306 } // namespace v8 294 } // namespace v8
OLDNEW
« no previous file with comments | « test/unittests/compiler/instruction-selector-unittest.cc ('k') | test/unittests/compiler/js-type-feedback-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698