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

Side by Side Diff: test/cctest/compiler/test-scheduler.cc

Issue 430133002: Fixed a few space leaks. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/compiler/instruction.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "src/v8.h" 5 #include "src/v8.h"
6 #include "test/cctest/cctest.h" 6 #include "test/cctest/cctest.h"
7 7
8 #include "src/compiler/common-operator.h" 8 #include "src/compiler/common-operator.h"
9 #include "src/compiler/generic-node-inl.h" 9 #include "src/compiler/generic-node-inl.h"
10 #include "src/compiler/generic-node.h" 10 #include "src/compiler/generic-node.h"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 CheckRPONumbers(order, 2, true); 139 CheckRPONumbers(order, 2, true);
140 BasicBlock* loop[] = {schedule.entry(), schedule.exit()}; 140 BasicBlock* loop[] = {schedule.entry(), schedule.exit()};
141 CheckLoopContains(loop, 2); 141 CheckLoopContains(loop, 2);
142 } 142 }
143 143
144 144
145 TEST(RPOEndLoop) { 145 TEST(RPOEndLoop) {
146 HandleAndZoneScope scope; 146 HandleAndZoneScope scope;
147 Schedule schedule(scope.main_zone()); 147 Schedule schedule(scope.main_zone());
148 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 148 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
149 TestLoop* loop1 = CreateLoop(&schedule, 2); 149 SmartPointer<TestLoop> loop1(CreateLoop(&schedule, 2));
150 schedule.AddSuccessor(schedule.entry(), loop1->header()); 150 schedule.AddSuccessor(schedule.entry(), loop1->header());
151 BasicBlockVector* order = scheduler.ComputeSpecialRPO(); 151 BasicBlockVector* order = scheduler.ComputeSpecialRPO();
152 CheckRPONumbers(order, 3, true); 152 CheckRPONumbers(order, 3, true);
153 CheckLoopContains(loop1->nodes, loop1->count); 153 CheckLoopContains(loop1->nodes, loop1->count);
154 } 154 }
155 155
156 156
157 TEST(RPOEndLoopNested) { 157 TEST(RPOEndLoopNested) {
158 HandleAndZoneScope scope; 158 HandleAndZoneScope scope;
159 Schedule schedule(scope.main_zone()); 159 Schedule schedule(scope.main_zone());
160 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 160 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
161 TestLoop* loop1 = CreateLoop(&schedule, 2); 161 SmartPointer<TestLoop> loop1(CreateLoop(&schedule, 2));
162 schedule.AddSuccessor(schedule.entry(), loop1->header()); 162 schedule.AddSuccessor(schedule.entry(), loop1->header());
163 schedule.AddSuccessor(loop1->last(), schedule.entry()); 163 schedule.AddSuccessor(loop1->last(), schedule.entry());
164 BasicBlockVector* order = scheduler.ComputeSpecialRPO(); 164 BasicBlockVector* order = scheduler.ComputeSpecialRPO();
165 CheckRPONumbers(order, 3, true); 165 CheckRPONumbers(order, 3, true);
166 CheckLoopContains(loop1->nodes, loop1->count); 166 CheckLoopContains(loop1->nodes, loop1->count);
167 } 167 }
168 168
169 169
170 TEST(RPODiamond) { 170 TEST(RPODiamond) {
171 HandleAndZoneScope scope; 171 HandleAndZoneScope scope;
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 BasicBlock* loop3[] = {D, E}; 347 BasicBlock* loop3[] = {D, E};
348 CheckLoopContains(loop3, 2); 348 CheckLoopContains(loop3, 2);
349 } 349 }
350 350
351 351
352 TEST(RPOLoopFollow1) { 352 TEST(RPOLoopFollow1) {
353 HandleAndZoneScope scope; 353 HandleAndZoneScope scope;
354 Schedule schedule(scope.main_zone()); 354 Schedule schedule(scope.main_zone());
355 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 355 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
356 356
357 TestLoop* loop1 = CreateLoop(&schedule, 1); 357 SmartPointer<TestLoop> loop1(CreateLoop(&schedule, 1));
358 TestLoop* loop2 = CreateLoop(&schedule, 1); 358 SmartPointer<TestLoop> loop2(CreateLoop(&schedule, 1));
359 359
360 BasicBlock* A = schedule.entry(); 360 BasicBlock* A = schedule.entry();
361 BasicBlock* E = schedule.exit(); 361 BasicBlock* E = schedule.exit();
362 362
363 schedule.AddSuccessor(A, loop1->header()); 363 schedule.AddSuccessor(A, loop1->header());
364 schedule.AddSuccessor(loop1->header(), loop2->header()); 364 schedule.AddSuccessor(loop1->header(), loop2->header());
365 schedule.AddSuccessor(loop2->last(), E); 365 schedule.AddSuccessor(loop2->last(), E);
366 366
367 BasicBlockVector* order = scheduler.ComputeSpecialRPO(); 367 BasicBlockVector* order = scheduler.ComputeSpecialRPO();
368 368
369 CheckLoopContains(loop1->nodes, loop1->count); 369 CheckLoopContains(loop1->nodes, loop1->count);
370 370
371 CHECK_EQ(schedule.BasicBlockCount(), static_cast<int>(order->size())); 371 CHECK_EQ(schedule.BasicBlockCount(), static_cast<int>(order->size()));
372 CheckLoopContains(loop1->nodes, loop1->count); 372 CheckLoopContains(loop1->nodes, loop1->count);
373 CheckLoopContains(loop2->nodes, loop2->count); 373 CheckLoopContains(loop2->nodes, loop2->count);
374 delete loop1;
375 delete loop2;
376 } 374 }
377 375
378 376
379 TEST(RPOLoopFollow2) { 377 TEST(RPOLoopFollow2) {
380 HandleAndZoneScope scope; 378 HandleAndZoneScope scope;
381 Schedule schedule(scope.main_zone()); 379 Schedule schedule(scope.main_zone());
382 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 380 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
383 381
384 TestLoop* loop1 = CreateLoop(&schedule, 1); 382 SmartPointer<TestLoop> loop1(CreateLoop(&schedule, 1));
385 TestLoop* loop2 = CreateLoop(&schedule, 1); 383 SmartPointer<TestLoop> loop2(CreateLoop(&schedule, 1));
386 384
387 BasicBlock* A = schedule.entry(); 385 BasicBlock* A = schedule.entry();
388 BasicBlock* S = schedule.NewBasicBlock(); 386 BasicBlock* S = schedule.NewBasicBlock();
389 BasicBlock* E = schedule.exit(); 387 BasicBlock* E = schedule.exit();
390 388
391 schedule.AddSuccessor(A, loop1->header()); 389 schedule.AddSuccessor(A, loop1->header());
392 schedule.AddSuccessor(loop1->header(), S); 390 schedule.AddSuccessor(loop1->header(), S);
393 schedule.AddSuccessor(S, loop2->header()); 391 schedule.AddSuccessor(S, loop2->header());
394 schedule.AddSuccessor(loop2->last(), E); 392 schedule.AddSuccessor(loop2->last(), E);
395 393
396 BasicBlockVector* order = scheduler.ComputeSpecialRPO(); 394 BasicBlockVector* order = scheduler.ComputeSpecialRPO();
397 395
398 CheckLoopContains(loop1->nodes, loop1->count); 396 CheckLoopContains(loop1->nodes, loop1->count);
399 397
400 CHECK_EQ(schedule.BasicBlockCount(), static_cast<int>(order->size())); 398 CHECK_EQ(schedule.BasicBlockCount(), static_cast<int>(order->size()));
401 CheckLoopContains(loop1->nodes, loop1->count); 399 CheckLoopContains(loop1->nodes, loop1->count);
402 CheckLoopContains(loop2->nodes, loop2->count); 400 CheckLoopContains(loop2->nodes, loop2->count);
403 delete loop1;
404 delete loop2;
405 } 401 }
406 402
407 403
408 TEST(RPOLoopFollowN) { 404 TEST(RPOLoopFollowN) {
409 HandleAndZoneScope scope; 405 HandleAndZoneScope scope;
410 406
411 for (int size = 1; size < 5; size++) { 407 for (int size = 1; size < 5; size++) {
412 for (int exit = 0; exit < size; exit++) { 408 for (int exit = 0; exit < size; exit++) {
413 Schedule schedule(scope.main_zone()); 409 Schedule schedule(scope.main_zone());
414 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 410 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
415 TestLoop* loop1 = CreateLoop(&schedule, size); 411 SmartPointer<TestLoop> loop1(CreateLoop(&schedule, size));
416 TestLoop* loop2 = CreateLoop(&schedule, size); 412 SmartPointer<TestLoop> loop2(CreateLoop(&schedule, size));
417 BasicBlock* A = schedule.entry(); 413 BasicBlock* A = schedule.entry();
418 BasicBlock* E = schedule.exit(); 414 BasicBlock* E = schedule.exit();
419 415
420 schedule.AddSuccessor(A, loop1->header()); 416 schedule.AddSuccessor(A, loop1->header());
421 schedule.AddSuccessor(loop1->nodes[exit], loop2->header()); 417 schedule.AddSuccessor(loop1->nodes[exit], loop2->header());
422 schedule.AddSuccessor(loop2->nodes[exit], E); 418 schedule.AddSuccessor(loop2->nodes[exit], E);
423 BasicBlockVector* order = scheduler.ComputeSpecialRPO(); 419 BasicBlockVector* order = scheduler.ComputeSpecialRPO();
424 CheckLoopContains(loop1->nodes, loop1->count); 420 CheckLoopContains(loop1->nodes, loop1->count);
425 421
426 CHECK_EQ(schedule.BasicBlockCount(), static_cast<int>(order->size())); 422 CHECK_EQ(schedule.BasicBlockCount(), static_cast<int>(order->size()));
427 CheckLoopContains(loop1->nodes, loop1->count); 423 CheckLoopContains(loop1->nodes, loop1->count);
428 CheckLoopContains(loop2->nodes, loop2->count); 424 CheckLoopContains(loop2->nodes, loop2->count);
429 delete loop1;
430 delete loop2;
431 } 425 }
432 } 426 }
433 } 427 }
434 428
435 429
436 TEST(RPONestedLoopFollow1) { 430 TEST(RPONestedLoopFollow1) {
437 HandleAndZoneScope scope; 431 HandleAndZoneScope scope;
438 Schedule schedule(scope.main_zone()); 432 Schedule schedule(scope.main_zone());
439 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 433 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
440 434
441 TestLoop* loop1 = CreateLoop(&schedule, 1); 435 SmartPointer<TestLoop> loop1(CreateLoop(&schedule, 1));
442 TestLoop* loop2 = CreateLoop(&schedule, 1); 436 SmartPointer<TestLoop> loop2(CreateLoop(&schedule, 1));
443 437
444 BasicBlock* A = schedule.entry(); 438 BasicBlock* A = schedule.entry();
445 BasicBlock* B = schedule.NewBasicBlock(); 439 BasicBlock* B = schedule.NewBasicBlock();
446 BasicBlock* C = schedule.NewBasicBlock(); 440 BasicBlock* C = schedule.NewBasicBlock();
447 BasicBlock* E = schedule.exit(); 441 BasicBlock* E = schedule.exit();
448 442
449 schedule.AddSuccessor(A, B); 443 schedule.AddSuccessor(A, B);
450 schedule.AddSuccessor(B, loop1->header()); 444 schedule.AddSuccessor(B, loop1->header());
451 schedule.AddSuccessor(loop1->header(), loop2->header()); 445 schedule.AddSuccessor(loop1->header(), loop2->header());
452 schedule.AddSuccessor(loop2->last(), C); 446 schedule.AddSuccessor(loop2->last(), C);
453 schedule.AddSuccessor(C, E); 447 schedule.AddSuccessor(C, E);
454 schedule.AddSuccessor(C, B); 448 schedule.AddSuccessor(C, B);
455 449
456 BasicBlockVector* order = scheduler.ComputeSpecialRPO(); 450 BasicBlockVector* order = scheduler.ComputeSpecialRPO();
457 451
458 CheckLoopContains(loop1->nodes, loop1->count); 452 CheckLoopContains(loop1->nodes, loop1->count);
459 453
460 CHECK_EQ(schedule.BasicBlockCount(), static_cast<int>(order->size())); 454 CHECK_EQ(schedule.BasicBlockCount(), static_cast<int>(order->size()));
461 CheckLoopContains(loop1->nodes, loop1->count); 455 CheckLoopContains(loop1->nodes, loop1->count);
462 CheckLoopContains(loop2->nodes, loop2->count); 456 CheckLoopContains(loop2->nodes, loop2->count);
463 457
464 BasicBlock* loop3[] = {B, loop1->nodes[0], loop2->nodes[0], C}; 458 BasicBlock* loop3[] = {B, loop1->nodes[0], loop2->nodes[0], C};
465 CheckLoopContains(loop3, 4); 459 CheckLoopContains(loop3, 4);
466 delete loop1;
467 delete loop2;
468 } 460 }
469 461
470 462
471 TEST(RPOLoopBackedges1) { 463 TEST(RPOLoopBackedges1) {
472 HandleAndZoneScope scope; 464 HandleAndZoneScope scope;
473 465
474 int size = 8; 466 int size = 8;
475 for (int i = 0; i < size; i++) { 467 for (int i = 0; i < size; i++) {
476 for (int j = 0; j < size; j++) { 468 for (int j = 0; j < size; j++) {
477 Schedule schedule(scope.main_zone()); 469 Schedule schedule(scope.main_zone());
478 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 470 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
479 BasicBlock* A = schedule.entry(); 471 BasicBlock* A = schedule.entry();
480 BasicBlock* E = schedule.exit(); 472 BasicBlock* E = schedule.exit();
481 473
482 TestLoop* loop1 = CreateLoop(&schedule, size); 474 SmartPointer<TestLoop> loop1(CreateLoop(&schedule, size));
483 schedule.AddSuccessor(A, loop1->header()); 475 schedule.AddSuccessor(A, loop1->header());
484 schedule.AddSuccessor(loop1->last(), E); 476 schedule.AddSuccessor(loop1->last(), E);
485 477
486 schedule.AddSuccessor(loop1->nodes[i], loop1->header()); 478 schedule.AddSuccessor(loop1->nodes[i], loop1->header());
487 schedule.AddSuccessor(loop1->nodes[j], E); 479 schedule.AddSuccessor(loop1->nodes[j], E);
488 480
489 BasicBlockVector* order = scheduler.ComputeSpecialRPO(); 481 BasicBlockVector* order = scheduler.ComputeSpecialRPO();
490 CheckRPONumbers(order, schedule.BasicBlockCount(), true); 482 CheckRPONumbers(order, schedule.BasicBlockCount(), true);
491 CheckLoopContains(loop1->nodes, loop1->count); 483 CheckLoopContains(loop1->nodes, loop1->count);
492 delete loop1;
493 } 484 }
494 } 485 }
495 } 486 }
496 487
497 488
498 TEST(RPOLoopOutedges1) { 489 TEST(RPOLoopOutedges1) {
499 HandleAndZoneScope scope; 490 HandleAndZoneScope scope;
500 491
501 int size = 8; 492 int size = 8;
502 for (int i = 0; i < size; i++) { 493 for (int i = 0; i < size; i++) {
503 for (int j = 0; j < size; j++) { 494 for (int j = 0; j < size; j++) {
504 Schedule schedule(scope.main_zone()); 495 Schedule schedule(scope.main_zone());
505 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 496 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
506 BasicBlock* A = schedule.entry(); 497 BasicBlock* A = schedule.entry();
507 BasicBlock* D = schedule.NewBasicBlock(); 498 BasicBlock* D = schedule.NewBasicBlock();
508 BasicBlock* E = schedule.exit(); 499 BasicBlock* E = schedule.exit();
509 500
510 TestLoop* loop1 = CreateLoop(&schedule, size); 501 SmartPointer<TestLoop> loop1(CreateLoop(&schedule, size));
511 schedule.AddSuccessor(A, loop1->header()); 502 schedule.AddSuccessor(A, loop1->header());
512 schedule.AddSuccessor(loop1->last(), E); 503 schedule.AddSuccessor(loop1->last(), E);
513 504
514 schedule.AddSuccessor(loop1->nodes[i], loop1->header()); 505 schedule.AddSuccessor(loop1->nodes[i], loop1->header());
515 schedule.AddSuccessor(loop1->nodes[j], D); 506 schedule.AddSuccessor(loop1->nodes[j], D);
516 schedule.AddSuccessor(D, E); 507 schedule.AddSuccessor(D, E);
517 508
518 BasicBlockVector* order = scheduler.ComputeSpecialRPO(); 509 BasicBlockVector* order = scheduler.ComputeSpecialRPO();
519 CheckRPONumbers(order, schedule.BasicBlockCount(), true); 510 CheckRPONumbers(order, schedule.BasicBlockCount(), true);
520 CheckLoopContains(loop1->nodes, loop1->count); 511 CheckLoopContains(loop1->nodes, loop1->count);
521 delete loop1;
522 } 512 }
523 } 513 }
524 } 514 }
525 515
526 516
527 TEST(RPOLoopOutedges2) { 517 TEST(RPOLoopOutedges2) {
528 HandleAndZoneScope scope; 518 HandleAndZoneScope scope;
529 519
530 int size = 8; 520 int size = 8;
531 for (int i = 0; i < size; i++) { 521 for (int i = 0; i < size; i++) {
532 Schedule schedule(scope.main_zone()); 522 Schedule schedule(scope.main_zone());
533 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 523 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
534 BasicBlock* A = schedule.entry(); 524 BasicBlock* A = schedule.entry();
535 BasicBlock* E = schedule.exit(); 525 BasicBlock* E = schedule.exit();
536 526
537 TestLoop* loop1 = CreateLoop(&schedule, size); 527 SmartPointer<TestLoop> loop1(CreateLoop(&schedule, size));
538 schedule.AddSuccessor(A, loop1->header()); 528 schedule.AddSuccessor(A, loop1->header());
539 schedule.AddSuccessor(loop1->last(), E); 529 schedule.AddSuccessor(loop1->last(), E);
540 530
541 for (int j = 0; j < size; j++) { 531 for (int j = 0; j < size; j++) {
542 BasicBlock* O = schedule.NewBasicBlock(); 532 BasicBlock* O = schedule.NewBasicBlock();
543 schedule.AddSuccessor(loop1->nodes[j], O); 533 schedule.AddSuccessor(loop1->nodes[j], O);
544 schedule.AddSuccessor(O, E); 534 schedule.AddSuccessor(O, E);
545 } 535 }
546 536
547 BasicBlockVector* order = scheduler.ComputeSpecialRPO(); 537 BasicBlockVector* order = scheduler.ComputeSpecialRPO();
548 CheckRPONumbers(order, schedule.BasicBlockCount(), true); 538 CheckRPONumbers(order, schedule.BasicBlockCount(), true);
549 CheckLoopContains(loop1->nodes, loop1->count); 539 CheckLoopContains(loop1->nodes, loop1->count);
550 delete loop1;
551 } 540 }
552 } 541 }
553 542
554 543
555 TEST(RPOLoopOutloops1) { 544 TEST(RPOLoopOutloops1) {
556 HandleAndZoneScope scope; 545 HandleAndZoneScope scope;
557 546
558 int size = 8; 547 int size = 8;
559 for (int i = 0; i < size; i++) { 548 for (int i = 0; i < size; i++) {
560 Schedule schedule(scope.main_zone()); 549 Schedule schedule(scope.main_zone());
561 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 550 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
562 BasicBlock* A = schedule.entry(); 551 BasicBlock* A = schedule.entry();
563 BasicBlock* E = schedule.exit(); 552 BasicBlock* E = schedule.exit();
564 TestLoop* loop1 = CreateLoop(&schedule, size); 553 SmartPointer<TestLoop> loop1(CreateLoop(&schedule, size));
565 schedule.AddSuccessor(A, loop1->header()); 554 schedule.AddSuccessor(A, loop1->header());
566 schedule.AddSuccessor(loop1->last(), E); 555 schedule.AddSuccessor(loop1->last(), E);
567 556
568 TestLoop** loopN = new TestLoop* [size]; 557 TestLoop** loopN = new TestLoop* [size];
569 for (int j = 0; j < size; j++) { 558 for (int j = 0; j < size; j++) {
570 loopN[j] = CreateLoop(&schedule, 2); 559 loopN[j] = CreateLoop(&schedule, 2);
571 schedule.AddSuccessor(loop1->nodes[j], loopN[j]->header()); 560 schedule.AddSuccessor(loop1->nodes[j], loopN[j]->header());
572 schedule.AddSuccessor(loopN[j]->last(), E); 561 schedule.AddSuccessor(loopN[j]->last(), E);
573 } 562 }
574 563
575 BasicBlockVector* order = scheduler.ComputeSpecialRPO(); 564 BasicBlockVector* order = scheduler.ComputeSpecialRPO();
576 CheckRPONumbers(order, schedule.BasicBlockCount(), true); 565 CheckRPONumbers(order, schedule.BasicBlockCount(), true);
577 CheckLoopContains(loop1->nodes, loop1->count); 566 CheckLoopContains(loop1->nodes, loop1->count);
578 567
579 for (int j = 0; j < size; j++) { 568 for (int j = 0; j < size; j++) {
580 CheckLoopContains(loopN[j]->nodes, loopN[j]->count); 569 CheckLoopContains(loopN[j]->nodes, loopN[j]->count);
581 delete loopN[j]; 570 delete loopN[j];
582 } 571 }
583 delete[] loopN; 572 delete[] loopN;
584 delete loop1;
585 } 573 }
586 } 574 }
587 575
588 576
589 TEST(RPOLoopMultibackedge) { 577 TEST(RPOLoopMultibackedge) {
590 HandleAndZoneScope scope; 578 HandleAndZoneScope scope;
591 Schedule schedule(scope.main_zone()); 579 Schedule schedule(scope.main_zone());
592 Scheduler scheduler(scope.main_zone(), NULL, &schedule); 580 Scheduler scheduler(scope.main_zone(), NULL, &schedule);
593 581
594 BasicBlock* A = schedule.entry(); 582 BasicBlock* A = schedule.entry();
(...skipping 1236 matching lines...) Expand 10 before | Expand all | Expand 10 after
1831 // The lazy deopt block is deferred. 1819 // The lazy deopt block is deferred.
1832 CHECK(deopt_block->deferred_); 1820 CHECK(deopt_block->deferred_);
1833 CHECK(!call_block->deferred_); 1821 CHECK(!call_block->deferred_);
1834 CHECK(!cont_block->deferred_); 1822 CHECK(!cont_block->deferred_);
1835 // The lazy deopt block contains framestate + bailout (and nothing else). 1823 // The lazy deopt block contains framestate + bailout (and nothing else).
1836 CHECK_EQ(deoptimization_node, deopt_block->control_input_); 1824 CHECK_EQ(deoptimization_node, deopt_block->control_input_);
1837 CHECK_EQ(2, static_cast<int>(deopt_block->nodes_.size())); 1825 CHECK_EQ(2, static_cast<int>(deopt_block->nodes_.size()));
1838 CHECK_EQ(lazy_deopt_node, deopt_block->nodes_[0]); 1826 CHECK_EQ(lazy_deopt_node, deopt_block->nodes_[0]);
1839 CHECK_EQ(state_node, deopt_block->nodes_[1]); 1827 CHECK_EQ(state_node, deopt_block->nodes_[1]);
1840 } 1828 }
OLDNEW
« no previous file with comments | « src/compiler/instruction.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698