OLD | NEW |
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 #include <functional> | 5 #include <functional> |
6 | 6 |
7 #include "src/compiler/graph.h" | 7 #include "src/compiler/graph.h" |
8 #include "src/compiler/node.h" | 8 #include "src/compiler/node.h" |
9 #include "src/compiler/operator.h" | 9 #include "src/compiler/operator.h" |
10 #include "test/cctest/cctest.h" | 10 #include "test/cctest/cctest.h" |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 n3->AppendInput(graph.zone(), n4); | 313 n3->AppendInput(graph.zone(), n4); |
314 | 314 |
315 CHECK_INPUTS(n3, n0, n1, n2, n4, n4); | 315 CHECK_INPUTS(n3, n0, n1, n2, n4, n4); |
316 CHECK_USES(n4, n3, n3); | 316 CHECK_USES(n4, n3, n3); |
317 | 317 |
318 Node* n5 = graph.NewNode(&dummy_operator1, n4); | 318 Node* n5 = graph.NewNode(&dummy_operator1, n4); |
319 | 319 |
320 CHECK_USES(n4, n3, n3, n5); | 320 CHECK_USES(n4, n3, n3, n5); |
321 } | 321 } |
322 | 322 |
| 323 TEST(InsertInputs) { |
| 324 base::AccountingAllocator allocator; |
| 325 Zone zone(&allocator); |
| 326 Graph graph(&zone); |
| 327 |
| 328 Node* n0 = graph.NewNode(&dummy_operator0); |
| 329 Node* n1 = graph.NewNode(&dummy_operator1, n0); |
| 330 Node* n2 = graph.NewNode(&dummy_operator1, n0); |
| 331 |
| 332 { |
| 333 Node* node = graph.NewNode(&dummy_operator1, n0); |
| 334 node->InsertInputs(graph.zone(), 0, 1); |
| 335 node->ReplaceInput(0, n1); |
| 336 CHECK_INPUTS(node, n1, n0); |
| 337 } |
| 338 { |
| 339 Node* node = graph.NewNode(&dummy_operator1, n0); |
| 340 node->InsertInputs(graph.zone(), 0, 2); |
| 341 node->ReplaceInput(0, node); |
| 342 node->ReplaceInput(1, n2); |
| 343 CHECK_INPUTS(node, node, n2, n0); |
| 344 } |
| 345 { |
| 346 Node* node = graph.NewNode(&dummy_operator3, n0, n1, n2); |
| 347 node->InsertInputs(graph.zone(), 0, 1); |
| 348 node->ReplaceInput(0, node); |
| 349 CHECK_INPUTS(node, node, n0, n1, n2); |
| 350 } |
| 351 { |
| 352 Node* node = graph.NewNode(&dummy_operator3, n0, n1, n2); |
| 353 node->InsertInputs(graph.zone(), 1, 1); |
| 354 node->ReplaceInput(1, node); |
| 355 CHECK_INPUTS(node, n0, node, n1, n2); |
| 356 } |
| 357 { |
| 358 Node* node = graph.NewNode(&dummy_operator3, n0, n1, n2); |
| 359 node->InsertInputs(graph.zone(), 2, 1); |
| 360 node->ReplaceInput(2, node); |
| 361 CHECK_INPUTS(node, n0, n1, node, n2); |
| 362 } |
| 363 { |
| 364 Node* node = graph.NewNode(&dummy_operator3, n0, n1, n2); |
| 365 node->InsertInputs(graph.zone(), 2, 1); |
| 366 node->ReplaceInput(2, node); |
| 367 CHECK_INPUTS(node, n0, n1, node, n2); |
| 368 } |
| 369 { |
| 370 Node* node = graph.NewNode(&dummy_operator3, n0, n1, n2); |
| 371 node->InsertInputs(graph.zone(), 0, 4); |
| 372 node->ReplaceInput(0, node); |
| 373 node->ReplaceInput(1, node); |
| 374 node->ReplaceInput(2, node); |
| 375 node->ReplaceInput(3, node); |
| 376 CHECK_INPUTS(node, node, node, node, node, n0, n1, n2); |
| 377 } |
| 378 { |
| 379 Node* node = graph.NewNode(&dummy_operator3, n0, n1, n2); |
| 380 node->InsertInputs(graph.zone(), 1, 4); |
| 381 node->ReplaceInput(1, node); |
| 382 node->ReplaceInput(2, node); |
| 383 node->ReplaceInput(3, node); |
| 384 node->ReplaceInput(4, node); |
| 385 CHECK_INPUTS(node, n0, node, node, node, node, n1, n2); |
| 386 } |
| 387 { |
| 388 Node* node = graph.NewNode(&dummy_operator3, n0, n1, n2); |
| 389 node->InsertInputs(graph.zone(), 2, 4); |
| 390 node->ReplaceInput(2, node); |
| 391 node->ReplaceInput(3, node); |
| 392 node->ReplaceInput(4, node); |
| 393 node->ReplaceInput(5, node); |
| 394 CHECK_INPUTS(node, n0, n1, node, node, node, node, n2); |
| 395 } |
| 396 } |
323 | 397 |
324 TEST(RemoveInput) { | 398 TEST(RemoveInput) { |
325 base::AccountingAllocator allocator; | 399 base::AccountingAllocator allocator; |
326 Zone zone(&allocator); | 400 Zone zone(&allocator); |
327 Graph graph(&zone); | 401 Graph graph(&zone); |
328 | 402 |
329 Node* n0 = graph.NewNode(&dummy_operator0); | 403 Node* n0 = graph.NewNode(&dummy_operator0); |
330 Node* n1 = graph.NewNode(&dummy_operator1, n0); | 404 Node* n1 = graph.NewNode(&dummy_operator1, n0); |
331 Node* n2 = graph.NewNode(&dummy_operator2, n0, n1); | 405 Node* n2 = graph.NewNode(&dummy_operator2, n0, n1); |
332 | 406 |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
797 if (j >= i) CHECK_USES(nodes[j], NONE); | 871 if (j >= i) CHECK_USES(nodes[j], NONE); |
798 } | 872 } |
799 | 873 |
800 CHECK_USES(last, NONE); | 874 CHECK_USES(last, NONE); |
801 } | 875 } |
802 } | 876 } |
803 | 877 |
804 } // namespace compiler | 878 } // namespace compiler |
805 } // namespace internal | 879 } // namespace internal |
806 } // namespace v8 | 880 } // namespace v8 |
OLD | NEW |