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

Side by Side Diff: test/unittests/compiler/scheduler-unittest.cc

Issue 1368913002: [turbofan] Check node input/use consistency for changed operators and new nodes. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Tweak 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/access-builder.h" 5 #include "src/compiler/access-builder.h"
6 #include "src/compiler/common-operator.h" 6 #include "src/compiler/common-operator.h"
7 #include "src/compiler/graph.h" 7 #include "src/compiler/graph.h"
8 #include "src/compiler/graph-visualizer.h" 8 #include "src/compiler/graph-visualizer.h"
9 #include "src/compiler/js-operator.h" 9 #include "src/compiler/js-operator.h"
10 #include "src/compiler/node.h" 10 #include "src/compiler/node.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 }; 130 };
131 131
132 132
133 namespace { 133 namespace {
134 134
135 const Operator kHeapConstant(IrOpcode::kHeapConstant, Operator::kPure, 135 const Operator kHeapConstant(IrOpcode::kHeapConstant, Operator::kPure,
136 "HeapConstant", 0, 0, 0, 1, 0, 0); 136 "HeapConstant", 0, 0, 0, 1, 0, 0);
137 const Operator kIntAdd(IrOpcode::kInt32Add, Operator::kPure, "Int32Add", 2, 0, 137 const Operator kIntAdd(IrOpcode::kInt32Add, Operator::kPure, "Int32Add", 2, 0,
138 0, 1, 0, 0); 138 0, 1, 0, 0);
139 const Operator kMockCall(IrOpcode::kCall, Operator::kNoProperties, "MockCall", 139 const Operator kMockCall(IrOpcode::kCall, Operator::kNoProperties, "MockCall",
140 0, 0, 1, 1, 0, 2); 140 0, 0, 1, 1, 1, 2);
141 const Operator kMockTailCall(IrOpcode::kTailCall, Operator::kNoProperties, 141 const Operator kMockTailCall(IrOpcode::kTailCall, Operator::kNoProperties,
142 "MockTailCall", 1, 1, 1, 0, 0, 1); 142 "MockTailCall", 1, 1, 1, 0, 0, 1);
143 143
144 } // namespace 144 } // namespace
145 145
146 146
147 // ----------------------------------------------------------------------------- 147 // -----------------------------------------------------------------------------
148 // Special reverse-post-order block ordering. 148 // Special reverse-post-order block ordering.
149 149
150 150
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 Node* p1 = graph()->NewNode(common()->Parameter(0), graph()->start()); 642 Node* p1 = graph()->NewNode(common()->Parameter(0), graph()->start());
643 Node* ret = graph()->NewNode(common()->Return(), p1, graph()->start(), 643 Node* ret = graph()->NewNode(common()->Return(), p1, graph()->start(),
644 graph()->start()); 644 graph()->start());
645 645
646 graph()->SetEnd(graph()->NewNode(common()->End(1), ret)); 646 graph()->SetEnd(graph()->NewNode(common()->End(1), ret));
647 647
648 USE(Scheduler::ComputeSchedule(zone(), graph(), Scheduler::kNoFlags)); 648 USE(Scheduler::ComputeSchedule(zone(), graph(), Scheduler::kNoFlags));
649 } 649 }
650 650
651 651
652 TEST_F(SchedulerTest, BuildScheduleIfSplit) {
653 graph()->SetStart(graph()->NewNode(common()->Start(5)));
654
655 Node* p1 = graph()->NewNode(common()->Parameter(0), graph()->start());
656 Node* p2 = graph()->NewNode(common()->Parameter(1), graph()->start());
657 Node* p3 = graph()->NewNode(common()->Parameter(2), graph()->start());
658 Node* p4 = graph()->NewNode(common()->Parameter(3), graph()->start());
659 Node* p5 = graph()->NewNode(common()->Parameter(4), graph()->start());
660 Node* cmp =
661 graph()->NewNode(js()->LessThanOrEqual(LanguageMode::SLOPPY), p1, p2, p3,
662 p4, p5, graph()->start(), graph()->start());
663 Node* branch = graph()->NewNode(common()->Branch(), cmp, graph()->start());
664 Node* true_branch = graph()->NewNode(common()->IfTrue(), branch);
665 Node* false_branch = graph()->NewNode(common()->IfFalse(), branch);
666
667 Node* ret1 =
668 graph()->NewNode(common()->Return(), p4, graph()->start(), true_branch);
669 Node* ret2 =
670 graph()->NewNode(common()->Return(), p5, graph()->start(), false_branch);
671 graph()->SetEnd(graph()->NewNode(common()->End(2), ret1, ret2));
672
673 ComputeAndVerifySchedule(13);
674 }
675
676
677 namespace { 652 namespace {
678 653
679 Node* CreateDiamond(Graph* graph, CommonOperatorBuilder* common, Node* cond) { 654 Node* CreateDiamond(Graph* graph, CommonOperatorBuilder* common, Node* cond) {
680 Node* tv = graph->NewNode(common->Int32Constant(6)); 655 Node* tv = graph->NewNode(common->Int32Constant(6));
681 Node* fv = graph->NewNode(common->Int32Constant(7)); 656 Node* fv = graph->NewNode(common->Int32Constant(7));
682 Node* br = graph->NewNode(common->Branch(), cond, graph->start()); 657 Node* br = graph->NewNode(common->Branch(), cond, graph->start());
683 Node* t = graph->NewNode(common->IfTrue(), br); 658 Node* t = graph->NewNode(common->IfTrue(), br);
684 Node* f = graph->NewNode(common->IfFalse(), br); 659 Node* f = graph->NewNode(common->IfFalse(), br);
685 Node* m = graph->NewNode(common->Merge(2), t, f); 660 Node* m = graph->NewNode(common->Merge(2), t, f);
686 Node* phi = graph->NewNode(common->Phi(kMachAnyTagged, 2), tv, fv, m); 661 Node* phi = graph->NewNode(common->Phi(kMachAnyTagged, 2), tv, fv, m);
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
1160 1135
1161 Schedule* schedule = ComputeAndVerifySchedule(6); 1136 Schedule* schedule = ComputeAndVerifySchedule(6);
1162 BasicBlock* block = schedule->block(loop); 1137 BasicBlock* block = schedule->block(loop);
1163 EXPECT_EQ(block, schedule->block(effect)); 1138 EXPECT_EQ(block, schedule->block(effect));
1164 EXPECT_GE(block->rpo_number(), 0); 1139 EXPECT_GE(block->rpo_number(), 0);
1165 } 1140 }
1166 1141
1167 } // namespace compiler 1142 } // namespace compiler
1168 } // namespace internal 1143 } // namespace internal
1169 } // namespace v8 1144 } // namespace v8
OLDNEW
« no previous file with comments | « test/unittests/compiler/loop-peeling-unittest.cc ('k') | test/unittests/compiler/value-numbering-reducer-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698