| Index: test/unittests/compiler/scheduler-unittest.cc
|
| diff --git a/test/unittests/compiler/scheduler-unittest.cc b/test/unittests/compiler/scheduler-unittest.cc
|
| index 4de15492b201b52a5ddaa6bcbc6d13d8dd8fcdc1..51fcb1b72e1088bfa783f3489e57a75608c7d45a 100644
|
| --- a/test/unittests/compiler/scheduler-unittest.cc
|
| +++ b/test/unittests/compiler/scheduler-unittest.cc
|
| @@ -650,7 +650,7 @@ TEST_F(SchedulerTest, BuildScheduleOneParameter) {
|
|
|
|
|
| TEST_F(SchedulerTest, BuildScheduleIfSplit) {
|
| - graph()->SetStart(graph()->NewNode(common()->Start(3)));
|
| + graph()->SetStart(graph()->NewNode(common()->Start(5)));
|
|
|
| Node* p1 = graph()->NewNode(common()->Parameter(0), graph()->start());
|
| Node* p2 = graph()->NewNode(common()->Parameter(1), graph()->start());
|
| @@ -658,7 +658,7 @@ TEST_F(SchedulerTest, BuildScheduleIfSplit) {
|
| Node* p4 = graph()->NewNode(common()->Parameter(3), graph()->start());
|
| Node* p5 = graph()->NewNode(common()->Parameter(4), graph()->start());
|
| Node* cmp = graph()->NewNode(js()->LessThanOrEqual(LanguageMode::SLOPPY), p1,
|
| - p2, p3, graph()->start(), graph()->start());
|
| + p2, p3, p4, graph()->start(), graph()->start());
|
| Node* branch = graph()->NewNode(common()->Branch(), cmp, graph()->start());
|
| Node* true_branch = graph()->NewNode(common()->IfTrue(), branch);
|
| Node* false_branch = graph()->NewNode(common()->IfFalse(), branch);
|
| @@ -674,1334 +674,6 @@ TEST_F(SchedulerTest, BuildScheduleIfSplit) {
|
| }
|
|
|
|
|
| -TEST_F(SchedulerTest, BuildScheduleIfSplitWithEffects) {
|
| - const Operator* op;
|
| - Unique<HeapObject> unique_constant =
|
| - Unique<HeapObject>::CreateImmovable(factory()->undefined_value());
|
| -
|
| - // Manually transcripted code for:
|
| - // function turbo_fan_test(a, b, c, y) {
|
| - // if (a < b) {
|
| - // return a + b - c * c - a + y;
|
| - // } else {
|
| - // return c * c - a;
|
| - // }
|
| - // }
|
| - Node* nil = graph()->NewNode(common()->Dead());
|
| - op = common()->End();
|
| - Node* n39 = graph()->NewNode(op, nil);
|
| - USE(n39);
|
| - op = common()->Merge(2);
|
| - Node* n37 = graph()->NewNode(op, nil, nil);
|
| - USE(n37);
|
| - op = common()->Return();
|
| - Node* n29 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n29);
|
| - op = common()->Return();
|
| - Node* n36 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n36);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n27 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n27);
|
| - op = common()->IfSuccess();
|
| - Node* n28 = graph()->NewNode(op, nil);
|
| - USE(n28);
|
| - op = js()->Subtract(LanguageMode::SLOPPY);
|
| - Node* n34 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n34);
|
| - op = common()->IfSuccess();
|
| - Node* n35 = graph()->NewNode(op, nil);
|
| - USE(n35);
|
| - op = js()->Subtract(LanguageMode::SLOPPY);
|
| - Node* n25 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n25);
|
| - op = common()->Parameter(4);
|
| - Node* n5 = graph()->NewNode(op, nil);
|
| - USE(n5);
|
| - op = common()->Parameter(5);
|
| - Node* n7 = graph()->NewNode(op, nil);
|
| - USE(n7);
|
| - op = common()->FrameState(JS_FRAME, BailoutId(-1),
|
| - OutputFrameStateCombine::Ignore());
|
| - Node* n13 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n13);
|
| - op = common()->IfSuccess();
|
| - Node* n26 = graph()->NewNode(op, nil);
|
| - USE(n26);
|
| - op = js()->Multiply(LanguageMode::SLOPPY);
|
| - Node* n32 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n32);
|
| - op = common()->Parameter(1);
|
| - Node* n2 = graph()->NewNode(op, nil);
|
| - USE(n2);
|
| - op = common()->IfSuccess();
|
| - Node* n33 = graph()->NewNode(op, nil);
|
| - USE(n33);
|
| - op = js()->Subtract(LanguageMode::SLOPPY);
|
| - Node* n23 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n23);
|
| - op = common()->IfSuccess();
|
| - Node* n24 = graph()->NewNode(op, nil);
|
| - USE(n24);
|
| - op = common()->Start(4);
|
| - Node* n0 = graph()->NewNode(op);
|
| - USE(n0);
|
| - op = common()->StateValues(0);
|
| - Node* n11 = graph()->NewNode(op);
|
| - USE(n11);
|
| - op = common()->NumberConstant(0);
|
| - Node* n12 = graph()->NewNode(op);
|
| - USE(n12);
|
| - op = common()->HeapConstant(unique_constant);
|
| - Node* n6 = graph()->NewNode(op);
|
| - USE(n6);
|
| - op = common()->Parameter(3);
|
| - Node* n4 = graph()->NewNode(op, nil);
|
| - USE(n4);
|
| - op = js()->LessThan(LanguageMode::SLOPPY);
|
| - Node* n15 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| - USE(n15);
|
| - op = common()->IfFalse();
|
| - Node* n31 = graph()->NewNode(op, nil);
|
| - USE(n31);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n19 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n19);
|
| - op = js()->Multiply(LanguageMode::SLOPPY);
|
| - Node* n21 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n21);
|
| - op = common()->IfSuccess();
|
| - Node* n22 = graph()->NewNode(op, nil);
|
| - USE(n22);
|
| - op = common()->Parameter(2);
|
| - Node* n3 = graph()->NewNode(op, nil);
|
| - USE(n3);
|
| - op = js()->StackCheck();
|
| - Node* n9 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n9);
|
| - op = common()->IfSuccess();
|
| - Node* n10 = graph()->NewNode(op, nil);
|
| - USE(n10);
|
| - op = common()->Branch();
|
| - Node* n17 = graph()->NewNode(op, nil, nil);
|
| - USE(n17);
|
| - op = common()->IfTrue();
|
| - Node* n18 = graph()->NewNode(op, nil);
|
| - USE(n18);
|
| - op = common()->IfSuccess();
|
| - Node* n20 = graph()->NewNode(op, nil);
|
| - USE(n20);
|
| - op = common()->IfSuccess();
|
| - Node* n16 = graph()->NewNode(op, nil);
|
| - USE(n16);
|
| - n39->ReplaceInput(0, n37);
|
| - n37->ReplaceInput(0, n29);
|
| - n37->ReplaceInput(1, n36);
|
| - n29->ReplaceInput(0, n27);
|
| - n29->ReplaceInput(1, n27);
|
| - n29->ReplaceInput(2, n28);
|
| - n36->ReplaceInput(0, n34);
|
| - n36->ReplaceInput(1, n34);
|
| - n36->ReplaceInput(2, n35);
|
| - n27->ReplaceInput(0, n25);
|
| - n27->ReplaceInput(1, n5);
|
| - n27->ReplaceInput(2, n7);
|
| - n27->ReplaceInput(3, n13);
|
| - n27->ReplaceInput(4, n13);
|
| - n27->ReplaceInput(5, n25);
|
| - n27->ReplaceInput(6, n26);
|
| - n28->ReplaceInput(0, n27);
|
| - n34->ReplaceInput(0, n32);
|
| - n34->ReplaceInput(1, n2);
|
| - n34->ReplaceInput(2, n7);
|
| - n34->ReplaceInput(3, n13);
|
| - n34->ReplaceInput(4, n13);
|
| - n34->ReplaceInput(5, n32);
|
| - n34->ReplaceInput(6, n33);
|
| - n35->ReplaceInput(0, n34);
|
| - n25->ReplaceInput(0, n23);
|
| - n25->ReplaceInput(1, n2);
|
| - n25->ReplaceInput(2, n7);
|
| - n25->ReplaceInput(3, n13);
|
| - n25->ReplaceInput(4, n13);
|
| - n25->ReplaceInput(5, n23);
|
| - n25->ReplaceInput(6, n24);
|
| - n5->ReplaceInput(0, n0);
|
| - n7->ReplaceInput(0, n0);
|
| - n13->ReplaceInput(0, n11);
|
| - n13->ReplaceInput(1, n11);
|
| - n13->ReplaceInput(2, n11);
|
| - n13->ReplaceInput(3, n12);
|
| - n13->ReplaceInput(4, n6);
|
| - n26->ReplaceInput(0, n25);
|
| - n32->ReplaceInput(0, n4);
|
| - n32->ReplaceInput(1, n4);
|
| - n32->ReplaceInput(2, n7);
|
| - n32->ReplaceInput(3, n13);
|
| - n32->ReplaceInput(4, n13);
|
| - n32->ReplaceInput(5, n15);
|
| - n32->ReplaceInput(6, n31);
|
| - n2->ReplaceInput(0, n0);
|
| - n33->ReplaceInput(0, n32);
|
| - n23->ReplaceInput(0, n19);
|
| - n23->ReplaceInput(1, n21);
|
| - n23->ReplaceInput(2, n7);
|
| - n23->ReplaceInput(3, n13);
|
| - n23->ReplaceInput(4, n13);
|
| - n23->ReplaceInput(5, n21);
|
| - n23->ReplaceInput(6, n22);
|
| - n24->ReplaceInput(0, n23);
|
| - n4->ReplaceInput(0, n0);
|
| - n15->ReplaceInput(0, n2);
|
| - n15->ReplaceInput(1, n3);
|
| - n15->ReplaceInput(2, n7);
|
| - n15->ReplaceInput(3, n13);
|
| - n15->ReplaceInput(4, n9);
|
| - n15->ReplaceInput(5, n10);
|
| - n31->ReplaceInput(0, n17);
|
| - n19->ReplaceInput(0, n2);
|
| - n19->ReplaceInput(1, n3);
|
| - n19->ReplaceInput(2, n7);
|
| - n19->ReplaceInput(3, n13);
|
| - n19->ReplaceInput(4, n13);
|
| - n19->ReplaceInput(5, n15);
|
| - n19->ReplaceInput(6, n18);
|
| - n21->ReplaceInput(0, n4);
|
| - n21->ReplaceInput(1, n4);
|
| - n21->ReplaceInput(2, n7);
|
| - n21->ReplaceInput(3, n13);
|
| - n21->ReplaceInput(4, n13);
|
| - n21->ReplaceInput(5, n19);
|
| - n21->ReplaceInput(6, n20);
|
| - n22->ReplaceInput(0, n21);
|
| - n3->ReplaceInput(0, n0);
|
| - n9->ReplaceInput(0, n7);
|
| - n9->ReplaceInput(1, n13);
|
| - n9->ReplaceInput(2, n0);
|
| - n9->ReplaceInput(3, n0);
|
| - n10->ReplaceInput(0, n9);
|
| - n17->ReplaceInput(0, n15);
|
| - n17->ReplaceInput(1, n16);
|
| - n18->ReplaceInput(0, n17);
|
| - n20->ReplaceInput(0, n19);
|
| - n16->ReplaceInput(0, n15);
|
| -
|
| - graph()->SetStart(n0);
|
| - graph()->SetEnd(n39);
|
| -
|
| - ComputeAndVerifySchedule(34);
|
| -}
|
| -
|
| -
|
| -TEST_F(SchedulerTest, BuildScheduleSimpleLoop) {
|
| - const Operator* op;
|
| - Unique<HeapObject> unique_constant =
|
| - Unique<HeapObject>::CreateImmovable(factory()->undefined_value());
|
| -
|
| - // Manually transcripted code for:
|
| - // function turbo_fan_test(a, b) {
|
| - // while (a < b) {
|
| - // a++;
|
| - // }
|
| - // return a;
|
| - // }
|
| - Node* nil = graph()->NewNode(common()->Dead());
|
| - op = common()->End();
|
| - Node* n34 = graph()->NewNode(op, nil);
|
| - USE(n34);
|
| - op = common()->Return();
|
| - Node* n32 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n32);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n13 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n13);
|
| - op = js()->LessThan(LanguageMode::SLOPPY);
|
| - Node* n16 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| - USE(n16);
|
| - op = common()->IfFalse();
|
| - Node* n22 = graph()->NewNode(op, nil);
|
| - USE(n22);
|
| - op = common()->Parameter(1);
|
| - Node* n2 = graph()->NewNode(op, nil);
|
| - USE(n2);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n29 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n29);
|
| - op = common()->Loop(2);
|
| - Node* n12 = graph()->NewNode(op, nil, nil);
|
| - USE(n12);
|
| - op = common()->Parameter(2);
|
| - Node* n3 = graph()->NewNode(op, nil);
|
| - USE(n3);
|
| - op = common()->Parameter(3);
|
| - Node* n5 = graph()->NewNode(op, nil);
|
| - USE(n5);
|
| - op = common()->FrameState(JS_FRAME, BailoutId(-1),
|
| - OutputFrameStateCombine::Ignore());
|
| - Node* n11 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n11);
|
| - op = common()->EffectPhi(2);
|
| - Node* n14 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n14);
|
| - op = common()->Branch();
|
| - Node* n19 = graph()->NewNode(op, nil, nil);
|
| - USE(n19);
|
| - op = common()->Start(2);
|
| - Node* n0 = graph()->NewNode(op);
|
| - USE(n0);
|
| - op = js()->ToNumber();
|
| - Node* n26 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n26);
|
| - op = common()->NumberConstant(1);
|
| - Node* n28 = graph()->NewNode(op);
|
| - USE(n28);
|
| - op = common()->IfSuccess();
|
| - Node* n27 = graph()->NewNode(op, nil);
|
| - USE(n27);
|
| - op = common()->IfSuccess();
|
| - Node* n8 = graph()->NewNode(op, nil);
|
| - USE(n8);
|
| - op = common()->IfSuccess();
|
| - Node* n30 = graph()->NewNode(op, nil);
|
| - USE(n30);
|
| - op = common()->StateValues(0);
|
| - Node* n9 = graph()->NewNode(op);
|
| - USE(n9);
|
| - op = common()->NumberConstant(0);
|
| - Node* n10 = graph()->NewNode(op);
|
| - USE(n10);
|
| - op = common()->HeapConstant(unique_constant);
|
| - Node* n4 = graph()->NewNode(op);
|
| - USE(n4);
|
| - op = js()->StackCheck();
|
| - Node* n7 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n7);
|
| - op = js()->ToBoolean();
|
| - Node* n18 = graph()->NewNode(op, nil, nil);
|
| - USE(n18);
|
| - op = common()->IfSuccess();
|
| - Node* n17 = graph()->NewNode(op, nil);
|
| - USE(n17);
|
| - op = js()->StackCheck();
|
| - Node* n24 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n24);
|
| - op = common()->IfSuccess();
|
| - Node* n25 = graph()->NewNode(op, nil);
|
| - USE(n25);
|
| - op = common()->IfTrue();
|
| - Node* n20 = graph()->NewNode(op, nil);
|
| - USE(n20);
|
| - n34->ReplaceInput(0, n32);
|
| - n32->ReplaceInput(0, n13);
|
| - n32->ReplaceInput(1, n16);
|
| - n32->ReplaceInput(2, n22);
|
| - n13->ReplaceInput(0, n2);
|
| - n13->ReplaceInput(1, n29);
|
| - n13->ReplaceInput(2, n12);
|
| - n16->ReplaceInput(0, n13);
|
| - n16->ReplaceInput(1, n3);
|
| - n16->ReplaceInput(2, n5);
|
| - n16->ReplaceInput(3, n11);
|
| - n16->ReplaceInput(4, n14);
|
| - n16->ReplaceInput(5, n12);
|
| - n22->ReplaceInput(0, n19);
|
| - n2->ReplaceInput(0, n0);
|
| - n29->ReplaceInput(0, n26);
|
| - n29->ReplaceInput(1, n28);
|
| - n29->ReplaceInput(2, n5);
|
| - n29->ReplaceInput(3, n11);
|
| - n29->ReplaceInput(4, n11);
|
| - n29->ReplaceInput(5, n26);
|
| - n29->ReplaceInput(6, n27);
|
| - n12->ReplaceInput(0, n8);
|
| - n12->ReplaceInput(1, n30);
|
| - n3->ReplaceInput(0, n0);
|
| - n5->ReplaceInput(0, n0);
|
| - n11->ReplaceInput(0, n9);
|
| - n11->ReplaceInput(1, n9);
|
| - n11->ReplaceInput(2, n9);
|
| - n11->ReplaceInput(3, n10);
|
| - n11->ReplaceInput(4, n4);
|
| - n14->ReplaceInput(0, n7);
|
| - n14->ReplaceInput(1, n29);
|
| - n14->ReplaceInput(2, n12);
|
| - n19->ReplaceInput(0, n18);
|
| - n19->ReplaceInput(1, n17);
|
| - n26->ReplaceInput(0, n13);
|
| - n26->ReplaceInput(1, n5);
|
| - n26->ReplaceInput(2, n11);
|
| - n26->ReplaceInput(3, n24);
|
| - n26->ReplaceInput(4, n25);
|
| - n27->ReplaceInput(0, n26);
|
| - n8->ReplaceInput(0, n7);
|
| - n30->ReplaceInput(0, n29);
|
| - n7->ReplaceInput(0, n5);
|
| - n7->ReplaceInput(1, n11);
|
| - n7->ReplaceInput(2, n0);
|
| - n7->ReplaceInput(3, n0);
|
| - n18->ReplaceInput(0, n16);
|
| - n18->ReplaceInput(1, n5);
|
| - n17->ReplaceInput(0, n16);
|
| - n24->ReplaceInput(0, n5);
|
| - n24->ReplaceInput(1, n11);
|
| - n24->ReplaceInput(2, n16);
|
| - n24->ReplaceInput(3, n20);
|
| - n25->ReplaceInput(0, n24);
|
| - n20->ReplaceInput(0, n19);
|
| -
|
| - graph()->SetStart(n0);
|
| - graph()->SetEnd(n34);
|
| -
|
| - ComputeAndVerifySchedule(30);
|
| -}
|
| -
|
| -
|
| -TEST_F(SchedulerTest, BuildScheduleComplexLoops) {
|
| - const Operator* op;
|
| - Unique<HeapObject> unique_constant =
|
| - Unique<HeapObject>::CreateImmovable(factory()->undefined_value());
|
| -
|
| - // Manually transcripted code for:
|
| - // function turbo_fan_test(a, b, c) {
|
| - // while (a < b) {
|
| - // a++;
|
| - // while (c < b) {
|
| - // c++;
|
| - // }
|
| - // }
|
| - // while (a < b) {
|
| - // a += 2;
|
| - // }
|
| - // return a;
|
| - // }
|
| - Node* nil = graph()->NewNode(common()->Dead());
|
| - op = common()->End();
|
| - Node* n71 = graph()->NewNode(op, nil);
|
| - USE(n71);
|
| - op = common()->Return();
|
| - Node* n69 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n69);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n53 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n53);
|
| - op = js()->LessThan(LanguageMode::SLOPPY);
|
| - Node* n55 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| - USE(n55);
|
| - op = common()->IfFalse();
|
| - Node* n61 = graph()->NewNode(op, nil);
|
| - USE(n61);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n14 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n14);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n66 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n66);
|
| - op = common()->Loop(2);
|
| - Node* n52 = graph()->NewNode(op, nil, nil);
|
| - USE(n52);
|
| - op = common()->Parameter(2);
|
| - Node* n3 = graph()->NewNode(op, nil);
|
| - USE(n3);
|
| - op = common()->Parameter(4);
|
| - Node* n6 = graph()->NewNode(op, nil);
|
| - USE(n6);
|
| - op = common()->FrameState(JS_FRAME, BailoutId(-1),
|
| - OutputFrameStateCombine::Ignore());
|
| - Node* n12 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n12);
|
| - op = common()->EffectPhi(2);
|
| - Node* n54 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n54);
|
| - op = common()->Branch();
|
| - Node* n58 = graph()->NewNode(op, nil, nil);
|
| - USE(n58);
|
| - op = common()->Parameter(1);
|
| - Node* n2 = graph()->NewNode(op, nil);
|
| - USE(n2);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n31 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n31);
|
| - op = common()->Loop(2);
|
| - Node* n13 = graph()->NewNode(op, nil, nil);
|
| - USE(n13);
|
| - op = common()->NumberConstant(2);
|
| - Node* n65 = graph()->NewNode(op);
|
| - USE(n65);
|
| - op = js()->StackCheck();
|
| - Node* n63 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n63);
|
| - op = common()->IfSuccess();
|
| - Node* n64 = graph()->NewNode(op, nil);
|
| - USE(n64);
|
| - op = common()->IfFalse();
|
| - Node* n24 = graph()->NewNode(op, nil);
|
| - USE(n24);
|
| - op = common()->IfSuccess();
|
| - Node* n67 = graph()->NewNode(op, nil);
|
| - USE(n67);
|
| - op = common()->Start(3);
|
| - Node* n0 = graph()->NewNode(op);
|
| - USE(n0);
|
| - op = common()->StateValues(0);
|
| - Node* n10 = graph()->NewNode(op);
|
| - USE(n10);
|
| - op = common()->NumberConstant(0);
|
| - Node* n11 = graph()->NewNode(op);
|
| - USE(n11);
|
| - op = common()->HeapConstant(unique_constant);
|
| - Node* n5 = graph()->NewNode(op);
|
| - USE(n5);
|
| - op = js()->LessThan(LanguageMode::SLOPPY);
|
| - Node* n18 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| - USE(n18);
|
| - op = js()->ToBoolean();
|
| - Node* n57 = graph()->NewNode(op, nil, nil);
|
| - USE(n57);
|
| - op = common()->IfSuccess();
|
| - Node* n56 = graph()->NewNode(op, nil);
|
| - USE(n56);
|
| - op = js()->ToNumber();
|
| - Node* n28 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n28);
|
| - op = common()->NumberConstant(1);
|
| - Node* n30 = graph()->NewNode(op);
|
| - USE(n30);
|
| - op = common()->IfSuccess();
|
| - Node* n29 = graph()->NewNode(op, nil);
|
| - USE(n29);
|
| - op = common()->IfSuccess();
|
| - Node* n9 = graph()->NewNode(op, nil);
|
| - USE(n9);
|
| - op = common()->IfFalse();
|
| - Node* n42 = graph()->NewNode(op, nil);
|
| - USE(n42);
|
| - op = common()->IfTrue();
|
| - Node* n59 = graph()->NewNode(op, nil);
|
| - USE(n59);
|
| - op = common()->Branch();
|
| - Node* n21 = graph()->NewNode(op, nil, nil);
|
| - USE(n21);
|
| - op = common()->EffectPhi(2);
|
| - Node* n16 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n16);
|
| - op = js()->StackCheck();
|
| - Node* n26 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n26);
|
| - op = common()->IfSuccess();
|
| - Node* n27 = graph()->NewNode(op, nil);
|
| - USE(n27);
|
| - op = js()->StackCheck();
|
| - Node* n8 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n8);
|
| - op = common()->Branch();
|
| - Node* n39 = graph()->NewNode(op, nil, nil);
|
| - USE(n39);
|
| - op = js()->ToBoolean();
|
| - Node* n20 = graph()->NewNode(op, nil, nil);
|
| - USE(n20);
|
| - op = common()->IfSuccess();
|
| - Node* n19 = graph()->NewNode(op, nil);
|
| - USE(n19);
|
| - op = js()->LessThan(LanguageMode::SLOPPY);
|
| - Node* n36 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| - USE(n36);
|
| - op = common()->IfTrue();
|
| - Node* n22 = graph()->NewNode(op, nil);
|
| - USE(n22);
|
| - op = js()->ToBoolean();
|
| - Node* n38 = graph()->NewNode(op, nil, nil);
|
| - USE(n38);
|
| - op = common()->IfSuccess();
|
| - Node* n37 = graph()->NewNode(op, nil);
|
| - USE(n37);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n34 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n34);
|
| - op = common()->EffectPhi(2);
|
| - Node* n35 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n35);
|
| - op = common()->Loop(2);
|
| - Node* n33 = graph()->NewNode(op, nil, nil);
|
| - USE(n33);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n15 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n15);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n48 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n48);
|
| - op = common()->IfSuccess();
|
| - Node* n32 = graph()->NewNode(op, nil);
|
| - USE(n32);
|
| - op = common()->IfSuccess();
|
| - Node* n49 = graph()->NewNode(op, nil);
|
| - USE(n49);
|
| - op = common()->Parameter(3);
|
| - Node* n4 = graph()->NewNode(op, nil);
|
| - USE(n4);
|
| - op = js()->ToNumber();
|
| - Node* n46 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n46);
|
| - op = common()->IfSuccess();
|
| - Node* n47 = graph()->NewNode(op, nil);
|
| - USE(n47);
|
| - op = js()->StackCheck();
|
| - Node* n44 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n44);
|
| - op = common()->IfSuccess();
|
| - Node* n45 = graph()->NewNode(op, nil);
|
| - USE(n45);
|
| - op = common()->IfTrue();
|
| - Node* n40 = graph()->NewNode(op, nil);
|
| - USE(n40);
|
| - n71->ReplaceInput(0, n69);
|
| - n69->ReplaceInput(0, n53);
|
| - n69->ReplaceInput(1, n55);
|
| - n69->ReplaceInput(2, n61);
|
| - n53->ReplaceInput(0, n14);
|
| - n53->ReplaceInput(1, n66);
|
| - n53->ReplaceInput(2, n52);
|
| - n55->ReplaceInput(0, n53);
|
| - n55->ReplaceInput(1, n3);
|
| - n55->ReplaceInput(2, n6);
|
| - n55->ReplaceInput(3, n12);
|
| - n55->ReplaceInput(4, n54);
|
| - n55->ReplaceInput(5, n52);
|
| - n61->ReplaceInput(0, n58);
|
| - n14->ReplaceInput(0, n2);
|
| - n14->ReplaceInput(1, n31);
|
| - n14->ReplaceInput(2, n13);
|
| - n66->ReplaceInput(0, n53);
|
| - n66->ReplaceInput(1, n65);
|
| - n66->ReplaceInput(2, n6);
|
| - n66->ReplaceInput(3, n12);
|
| - n66->ReplaceInput(4, n12);
|
| - n66->ReplaceInput(5, n63);
|
| - n66->ReplaceInput(6, n64);
|
| - n52->ReplaceInput(0, n24);
|
| - n52->ReplaceInput(1, n67);
|
| - n3->ReplaceInput(0, n0);
|
| - n6->ReplaceInput(0, n0);
|
| - n12->ReplaceInput(0, n10);
|
| - n12->ReplaceInput(1, n10);
|
| - n12->ReplaceInput(2, n10);
|
| - n12->ReplaceInput(3, n11);
|
| - n12->ReplaceInput(4, n5);
|
| - n54->ReplaceInput(0, n18);
|
| - n54->ReplaceInput(1, n66);
|
| - n54->ReplaceInput(2, n52);
|
| - n58->ReplaceInput(0, n57);
|
| - n58->ReplaceInput(1, n56);
|
| - n2->ReplaceInput(0, n0);
|
| - n31->ReplaceInput(0, n28);
|
| - n31->ReplaceInput(1, n30);
|
| - n31->ReplaceInput(2, n6);
|
| - n31->ReplaceInput(3, n12);
|
| - n31->ReplaceInput(4, n12);
|
| - n31->ReplaceInput(5, n28);
|
| - n31->ReplaceInput(6, n29);
|
| - n13->ReplaceInput(0, n9);
|
| - n13->ReplaceInput(1, n42);
|
| - n63->ReplaceInput(0, n6);
|
| - n63->ReplaceInput(1, n12);
|
| - n63->ReplaceInput(2, n55);
|
| - n63->ReplaceInput(3, n59);
|
| - n64->ReplaceInput(0, n63);
|
| - n24->ReplaceInput(0, n21);
|
| - n67->ReplaceInput(0, n66);
|
| - n18->ReplaceInput(0, n14);
|
| - n18->ReplaceInput(1, n3);
|
| - n18->ReplaceInput(2, n6);
|
| - n18->ReplaceInput(3, n12);
|
| - n18->ReplaceInput(4, n16);
|
| - n18->ReplaceInput(5, n13);
|
| - n57->ReplaceInput(0, n55);
|
| - n57->ReplaceInput(1, n6);
|
| - n56->ReplaceInput(0, n55);
|
| - n28->ReplaceInput(0, n14);
|
| - n28->ReplaceInput(1, n6);
|
| - n28->ReplaceInput(2, n12);
|
| - n28->ReplaceInput(3, n26);
|
| - n28->ReplaceInput(4, n27);
|
| - n29->ReplaceInput(0, n28);
|
| - n9->ReplaceInput(0, n8);
|
| - n42->ReplaceInput(0, n39);
|
| - n59->ReplaceInput(0, n58);
|
| - n21->ReplaceInput(0, n20);
|
| - n21->ReplaceInput(1, n19);
|
| - n16->ReplaceInput(0, n8);
|
| - n16->ReplaceInput(1, n36);
|
| - n16->ReplaceInput(2, n13);
|
| - n26->ReplaceInput(0, n6);
|
| - n26->ReplaceInput(1, n12);
|
| - n26->ReplaceInput(2, n18);
|
| - n26->ReplaceInput(3, n22);
|
| - n27->ReplaceInput(0, n26);
|
| - n8->ReplaceInput(0, n6);
|
| - n8->ReplaceInput(1, n12);
|
| - n8->ReplaceInput(2, n0);
|
| - n8->ReplaceInput(3, n0);
|
| - n39->ReplaceInput(0, n38);
|
| - n39->ReplaceInput(1, n37);
|
| - n20->ReplaceInput(0, n18);
|
| - n20->ReplaceInput(1, n6);
|
| - n19->ReplaceInput(0, n18);
|
| - n36->ReplaceInput(0, n34);
|
| - n36->ReplaceInput(1, n3);
|
| - n36->ReplaceInput(2, n6);
|
| - n36->ReplaceInput(3, n12);
|
| - n36->ReplaceInput(4, n35);
|
| - n36->ReplaceInput(5, n33);
|
| - n22->ReplaceInput(0, n21);
|
| - n38->ReplaceInput(0, n36);
|
| - n38->ReplaceInput(1, n6);
|
| - n37->ReplaceInput(0, n36);
|
| - n34->ReplaceInput(0, n15);
|
| - n34->ReplaceInput(1, n48);
|
| - n34->ReplaceInput(2, n33);
|
| - n35->ReplaceInput(0, n31);
|
| - n35->ReplaceInput(1, n48);
|
| - n35->ReplaceInput(2, n33);
|
| - n33->ReplaceInput(0, n32);
|
| - n33->ReplaceInput(1, n49);
|
| - n15->ReplaceInput(0, n4);
|
| - n15->ReplaceInput(1, n34);
|
| - n15->ReplaceInput(2, n13);
|
| - n48->ReplaceInput(0, n46);
|
| - n48->ReplaceInput(1, n30);
|
| - n48->ReplaceInput(2, n6);
|
| - n48->ReplaceInput(3, n12);
|
| - n48->ReplaceInput(4, n12);
|
| - n48->ReplaceInput(5, n46);
|
| - n48->ReplaceInput(6, n47);
|
| - n32->ReplaceInput(0, n31);
|
| - n49->ReplaceInput(0, n48);
|
| - n4->ReplaceInput(0, n0);
|
| - n46->ReplaceInput(0, n34);
|
| - n46->ReplaceInput(1, n6);
|
| - n46->ReplaceInput(2, n12);
|
| - n46->ReplaceInput(3, n44);
|
| - n46->ReplaceInput(4, n45);
|
| - n47->ReplaceInput(0, n46);
|
| - n44->ReplaceInput(0, n6);
|
| - n44->ReplaceInput(1, n12);
|
| - n44->ReplaceInput(2, n36);
|
| - n44->ReplaceInput(3, n40);
|
| - n45->ReplaceInput(0, n44);
|
| - n40->ReplaceInput(0, n39);
|
| -
|
| - graph()->SetStart(n0);
|
| - graph()->SetEnd(n71);
|
| -
|
| - ComputeAndVerifySchedule(65);
|
| -}
|
| -
|
| -
|
| -TEST_F(SchedulerTest, BuildScheduleBreakAndContinue) {
|
| - const Operator* op;
|
| - Unique<HeapObject> unique_constant =
|
| - Unique<HeapObject>::CreateImmovable(factory()->undefined_value());
|
| -
|
| - // Manually transcripted code for:
|
| - // function turbo_fan_test(a, b, c) {
|
| - // var d = 0;
|
| - // while (a < b) {
|
| - // a++;
|
| - // while (c < b) {
|
| - // c++;
|
| - // if (d == 0) break;
|
| - // a++;
|
| - // }
|
| - // if (a == 1) continue;
|
| - // d++;
|
| - // }
|
| - // return a + d;
|
| - // }
|
| - Node* nil = graph()->NewNode(common()->Dead());
|
| - op = common()->End();
|
| - Node* n86 = graph()->NewNode(op, nil);
|
| - USE(n86);
|
| - op = common()->Return();
|
| - Node* n84 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n84);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n82 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n82);
|
| - op = common()->IfSuccess();
|
| - Node* n83 = graph()->NewNode(op, nil);
|
| - USE(n83);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n15 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n15);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n17 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n17);
|
| - op = common()->Parameter(4);
|
| - Node* n6 = graph()->NewNode(op, nil);
|
| - USE(n6);
|
| - op = common()->FrameState(JS_FRAME, BailoutId(-1),
|
| - OutputFrameStateCombine::Ignore());
|
| - Node* n12 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n12);
|
| - op = js()->LessThan(LanguageMode::SLOPPY);
|
| - Node* n19 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| - USE(n19);
|
| - op = common()->IfFalse();
|
| - Node* n25 = graph()->NewNode(op, nil);
|
| - USE(n25);
|
| - op = common()->Parameter(1);
|
| - Node* n2 = graph()->NewNode(op, nil);
|
| - USE(n2);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n35 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n35);
|
| - op = common()->Loop(2);
|
| - Node* n14 = graph()->NewNode(op, nil, nil);
|
| - USE(n14);
|
| - op = common()->NumberConstant(0);
|
| - Node* n11 = graph()->NewNode(op);
|
| - USE(n11);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n81 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n81);
|
| - op = common()->Start(3);
|
| - Node* n0 = graph()->NewNode(op);
|
| - USE(n0);
|
| - op = common()->StateValues(0);
|
| - Node* n10 = graph()->NewNode(op);
|
| - USE(n10);
|
| - op = common()->HeapConstant(unique_constant);
|
| - Node* n5 = graph()->NewNode(op);
|
| - USE(n5);
|
| - op = common()->Parameter(2);
|
| - Node* n3 = graph()->NewNode(op, nil);
|
| - USE(n3);
|
| - op = common()->EffectPhi(2);
|
| - Node* n18 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n18);
|
| - op = common()->Branch();
|
| - Node* n22 = graph()->NewNode(op, nil, nil);
|
| - USE(n22);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n32 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n32);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n64 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n64);
|
| - op = common()->Loop(2);
|
| - Node* n34 = graph()->NewNode(op, nil, nil);
|
| - USE(n34);
|
| - op = common()->IfSuccess();
|
| - Node* n9 = graph()->NewNode(op, nil);
|
| - USE(n9);
|
| - op = common()->Merge(2);
|
| - Node* n72 = graph()->NewNode(op, nil, nil);
|
| - USE(n72);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n78 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n78);
|
| - op = js()->StackCheck();
|
| - Node* n8 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n8);
|
| - op = common()->EffectPhi(2);
|
| - Node* n80 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n80);
|
| - op = js()->ToBoolean();
|
| - Node* n21 = graph()->NewNode(op, nil, nil);
|
| - USE(n21);
|
| - op = common()->IfSuccess();
|
| - Node* n20 = graph()->NewNode(op, nil);
|
| - USE(n20);
|
| - op = js()->ToNumber();
|
| - Node* n29 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n29);
|
| - op = common()->NumberConstant(1);
|
| - Node* n31 = graph()->NewNode(op);
|
| - USE(n31);
|
| - op = common()->IfSuccess();
|
| - Node* n30 = graph()->NewNode(op, nil);
|
| - USE(n30);
|
| - op = js()->ToNumber();
|
| - Node* n62 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n62);
|
| - op = common()->IfSuccess();
|
| - Node* n63 = graph()->NewNode(op, nil);
|
| - USE(n63);
|
| - op = common()->IfSuccess();
|
| - Node* n33 = graph()->NewNode(op, nil);
|
| - USE(n33);
|
| - op = common()->IfSuccess();
|
| - Node* n65 = graph()->NewNode(op, nil);
|
| - USE(n65);
|
| - op = common()->IfTrue();
|
| - Node* n71 = graph()->NewNode(op, nil);
|
| - USE(n71);
|
| - op = common()->IfSuccess();
|
| - Node* n79 = graph()->NewNode(op, nil);
|
| - USE(n79);
|
| - op = js()->ToNumber();
|
| - Node* n76 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n76);
|
| - op = common()->IfSuccess();
|
| - Node* n77 = graph()->NewNode(op, nil);
|
| - USE(n77);
|
| - op = js()->Equal();
|
| - Node* n67 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| - USE(n67);
|
| - op = js()->StackCheck();
|
| - Node* n27 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n27);
|
| - op = common()->IfSuccess();
|
| - Node* n28 = graph()->NewNode(op, nil);
|
| - USE(n28);
|
| - op = js()->Equal();
|
| - Node* n52 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| - USE(n52);
|
| - op = common()->IfFalse();
|
| - Node* n60 = graph()->NewNode(op, nil);
|
| - USE(n60);
|
| - op = common()->Branch();
|
| - Node* n70 = graph()->NewNode(op, nil, nil);
|
| - USE(n70);
|
| - op = common()->IfFalse();
|
| - Node* n74 = graph()->NewNode(op, nil);
|
| - USE(n74);
|
| - op = common()->EffectPhi(2);
|
| - Node* n57 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n57);
|
| - op = common()->Merge(2);
|
| - Node* n45 = graph()->NewNode(op, nil, nil);
|
| - USE(n45);
|
| - op = common()->IfTrue();
|
| - Node* n23 = graph()->NewNode(op, nil);
|
| - USE(n23);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n50 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n50);
|
| - op = common()->IfSuccess();
|
| - Node* n51 = graph()->NewNode(op, nil);
|
| - USE(n51);
|
| - op = common()->Branch();
|
| - Node* n55 = graph()->NewNode(op, nil, nil);
|
| - USE(n55);
|
| - op = js()->ToBoolean();
|
| - Node* n69 = graph()->NewNode(op, nil, nil);
|
| - USE(n69);
|
| - op = common()->IfSuccess();
|
| - Node* n68 = graph()->NewNode(op, nil);
|
| - USE(n68);
|
| - op = js()->LessThan(LanguageMode::SLOPPY);
|
| - Node* n38 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| - USE(n38);
|
| - op = common()->IfFalse();
|
| - Node* n44 = graph()->NewNode(op, nil);
|
| - USE(n44);
|
| - op = common()->IfTrue();
|
| - Node* n56 = graph()->NewNode(op, nil);
|
| - USE(n56);
|
| - op = js()->ToNumber();
|
| - Node* n48 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n48);
|
| - op = common()->IfSuccess();
|
| - Node* n49 = graph()->NewNode(op, nil);
|
| - USE(n49);
|
| - op = js()->ToBoolean();
|
| - Node* n54 = graph()->NewNode(op, nil, nil);
|
| - USE(n54);
|
| - op = common()->IfSuccess();
|
| - Node* n53 = graph()->NewNode(op, nil);
|
| - USE(n53);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n36 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n36);
|
| - op = common()->EffectPhi(2);
|
| - Node* n37 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n37);
|
| - op = common()->Branch();
|
| - Node* n41 = graph()->NewNode(op, nil, nil);
|
| - USE(n41);
|
| - op = js()->StackCheck();
|
| - Node* n46 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n46);
|
| - op = common()->IfSuccess();
|
| - Node* n47 = graph()->NewNode(op, nil);
|
| - USE(n47);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n16 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n16);
|
| - op = js()->ToBoolean();
|
| - Node* n40 = graph()->NewNode(op, nil, nil);
|
| - USE(n40);
|
| - op = common()->IfSuccess();
|
| - Node* n39 = graph()->NewNode(op, nil);
|
| - USE(n39);
|
| - op = common()->IfTrue();
|
| - Node* n42 = graph()->NewNode(op, nil);
|
| - USE(n42);
|
| - op = common()->Parameter(3);
|
| - Node* n4 = graph()->NewNode(op, nil);
|
| - USE(n4);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n58 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n58);
|
| - n86->ReplaceInput(0, n84);
|
| - n84->ReplaceInput(0, n82);
|
| - n84->ReplaceInput(1, n82);
|
| - n84->ReplaceInput(2, n83);
|
| - n82->ReplaceInput(0, n15);
|
| - n82->ReplaceInput(1, n17);
|
| - n82->ReplaceInput(2, n6);
|
| - n82->ReplaceInput(3, n12);
|
| - n82->ReplaceInput(4, n12);
|
| - n82->ReplaceInput(5, n19);
|
| - n82->ReplaceInput(6, n25);
|
| - n83->ReplaceInput(0, n82);
|
| - n15->ReplaceInput(0, n2);
|
| - n15->ReplaceInput(1, n35);
|
| - n15->ReplaceInput(2, n14);
|
| - n17->ReplaceInput(0, n11);
|
| - n17->ReplaceInput(1, n81);
|
| - n17->ReplaceInput(2, n14);
|
| - n6->ReplaceInput(0, n0);
|
| - n12->ReplaceInput(0, n10);
|
| - n12->ReplaceInput(1, n10);
|
| - n12->ReplaceInput(2, n10);
|
| - n12->ReplaceInput(3, n11);
|
| - n12->ReplaceInput(4, n5);
|
| - n19->ReplaceInput(0, n15);
|
| - n19->ReplaceInput(1, n3);
|
| - n19->ReplaceInput(2, n6);
|
| - n19->ReplaceInput(3, n12);
|
| - n19->ReplaceInput(4, n18);
|
| - n19->ReplaceInput(5, n14);
|
| - n25->ReplaceInput(0, n22);
|
| - n2->ReplaceInput(0, n0);
|
| - n35->ReplaceInput(0, n32);
|
| - n35->ReplaceInput(1, n64);
|
| - n35->ReplaceInput(2, n34);
|
| - n14->ReplaceInput(0, n9);
|
| - n14->ReplaceInput(1, n72);
|
| - n81->ReplaceInput(0, n17);
|
| - n81->ReplaceInput(1, n78);
|
| - n81->ReplaceInput(2, n72);
|
| - n3->ReplaceInput(0, n0);
|
| - n18->ReplaceInput(0, n8);
|
| - n18->ReplaceInput(1, n80);
|
| - n18->ReplaceInput(2, n14);
|
| - n22->ReplaceInput(0, n21);
|
| - n22->ReplaceInput(1, n20);
|
| - n32->ReplaceInput(0, n29);
|
| - n32->ReplaceInput(1, n31);
|
| - n32->ReplaceInput(2, n6);
|
| - n32->ReplaceInput(3, n12);
|
| - n32->ReplaceInput(4, n12);
|
| - n32->ReplaceInput(5, n29);
|
| - n32->ReplaceInput(6, n30);
|
| - n64->ReplaceInput(0, n62);
|
| - n64->ReplaceInput(1, n31);
|
| - n64->ReplaceInput(2, n6);
|
| - n64->ReplaceInput(3, n12);
|
| - n64->ReplaceInput(4, n12);
|
| - n64->ReplaceInput(5, n62);
|
| - n64->ReplaceInput(6, n63);
|
| - n34->ReplaceInput(0, n33);
|
| - n34->ReplaceInput(1, n65);
|
| - n9->ReplaceInput(0, n8);
|
| - n72->ReplaceInput(0, n71);
|
| - n72->ReplaceInput(1, n79);
|
| - n78->ReplaceInput(0, n76);
|
| - n78->ReplaceInput(1, n31);
|
| - n78->ReplaceInput(2, n6);
|
| - n78->ReplaceInput(3, n12);
|
| - n78->ReplaceInput(4, n12);
|
| - n78->ReplaceInput(5, n76);
|
| - n78->ReplaceInput(6, n77);
|
| - n8->ReplaceInput(0, n6);
|
| - n8->ReplaceInput(1, n12);
|
| - n8->ReplaceInput(2, n0);
|
| - n8->ReplaceInput(3, n0);
|
| - n80->ReplaceInput(0, n67);
|
| - n80->ReplaceInput(1, n78);
|
| - n80->ReplaceInput(2, n72);
|
| - n21->ReplaceInput(0, n19);
|
| - n21->ReplaceInput(1, n6);
|
| - n20->ReplaceInput(0, n19);
|
| - n29->ReplaceInput(0, n15);
|
| - n29->ReplaceInput(1, n6);
|
| - n29->ReplaceInput(2, n12);
|
| - n29->ReplaceInput(3, n27);
|
| - n29->ReplaceInput(4, n28);
|
| - n30->ReplaceInput(0, n29);
|
| - n62->ReplaceInput(0, n35);
|
| - n62->ReplaceInput(1, n6);
|
| - n62->ReplaceInput(2, n12);
|
| - n62->ReplaceInput(3, n52);
|
| - n62->ReplaceInput(4, n60);
|
| - n63->ReplaceInput(0, n62);
|
| - n33->ReplaceInput(0, n32);
|
| - n65->ReplaceInput(0, n64);
|
| - n71->ReplaceInput(0, n70);
|
| - n79->ReplaceInput(0, n78);
|
| - n76->ReplaceInput(0, n17);
|
| - n76->ReplaceInput(1, n6);
|
| - n76->ReplaceInput(2, n12);
|
| - n76->ReplaceInput(3, n67);
|
| - n76->ReplaceInput(4, n74);
|
| - n77->ReplaceInput(0, n76);
|
| - n67->ReplaceInput(0, n35);
|
| - n67->ReplaceInput(1, n31);
|
| - n67->ReplaceInput(2, n6);
|
| - n67->ReplaceInput(3, n12);
|
| - n67->ReplaceInput(4, n57);
|
| - n67->ReplaceInput(5, n45);
|
| - n27->ReplaceInput(0, n6);
|
| - n27->ReplaceInput(1, n12);
|
| - n27->ReplaceInput(2, n19);
|
| - n27->ReplaceInput(3, n23);
|
| - n28->ReplaceInput(0, n27);
|
| - n52->ReplaceInput(0, n17);
|
| - n52->ReplaceInput(1, n11);
|
| - n52->ReplaceInput(2, n6);
|
| - n52->ReplaceInput(3, n12);
|
| - n52->ReplaceInput(4, n50);
|
| - n52->ReplaceInput(5, n51);
|
| - n60->ReplaceInput(0, n55);
|
| - n70->ReplaceInput(0, n69);
|
| - n70->ReplaceInput(1, n68);
|
| - n74->ReplaceInput(0, n70);
|
| - n57->ReplaceInput(0, n38);
|
| - n57->ReplaceInput(1, n52);
|
| - n57->ReplaceInput(2, n45);
|
| - n45->ReplaceInput(0, n44);
|
| - n45->ReplaceInput(1, n56);
|
| - n23->ReplaceInput(0, n22);
|
| - n50->ReplaceInput(0, n48);
|
| - n50->ReplaceInput(1, n31);
|
| - n50->ReplaceInput(2, n6);
|
| - n50->ReplaceInput(3, n12);
|
| - n50->ReplaceInput(4, n12);
|
| - n50->ReplaceInput(5, n48);
|
| - n50->ReplaceInput(6, n49);
|
| - n51->ReplaceInput(0, n50);
|
| - n55->ReplaceInput(0, n54);
|
| - n55->ReplaceInput(1, n53);
|
| - n69->ReplaceInput(0, n67);
|
| - n69->ReplaceInput(1, n6);
|
| - n68->ReplaceInput(0, n67);
|
| - n38->ReplaceInput(0, n36);
|
| - n38->ReplaceInput(1, n3);
|
| - n38->ReplaceInput(2, n6);
|
| - n38->ReplaceInput(3, n12);
|
| - n38->ReplaceInput(4, n37);
|
| - n38->ReplaceInput(5, n34);
|
| - n44->ReplaceInput(0, n41);
|
| - n56->ReplaceInput(0, n55);
|
| - n48->ReplaceInput(0, n36);
|
| - n48->ReplaceInput(1, n6);
|
| - n48->ReplaceInput(2, n12);
|
| - n48->ReplaceInput(3, n46);
|
| - n48->ReplaceInput(4, n47);
|
| - n49->ReplaceInput(0, n48);
|
| - n54->ReplaceInput(0, n52);
|
| - n54->ReplaceInput(1, n6);
|
| - n53->ReplaceInput(0, n52);
|
| - n36->ReplaceInput(0, n16);
|
| - n36->ReplaceInput(1, n50);
|
| - n36->ReplaceInput(2, n34);
|
| - n37->ReplaceInput(0, n32);
|
| - n37->ReplaceInput(1, n64);
|
| - n37->ReplaceInput(2, n34);
|
| - n41->ReplaceInput(0, n40);
|
| - n41->ReplaceInput(1, n39);
|
| - n46->ReplaceInput(0, n6);
|
| - n46->ReplaceInput(1, n12);
|
| - n46->ReplaceInput(2, n38);
|
| - n46->ReplaceInput(3, n42);
|
| - n47->ReplaceInput(0, n46);
|
| - n16->ReplaceInput(0, n4);
|
| - n16->ReplaceInput(1, n58);
|
| - n16->ReplaceInput(2, n14);
|
| - n40->ReplaceInput(0, n38);
|
| - n40->ReplaceInput(1, n6);
|
| - n39->ReplaceInput(0, n38);
|
| - n42->ReplaceInput(0, n41);
|
| - n4->ReplaceInput(0, n0);
|
| - n58->ReplaceInput(0, n36);
|
| - n58->ReplaceInput(1, n50);
|
| - n58->ReplaceInput(2, n45);
|
| -
|
| - graph()->SetStart(n0);
|
| - graph()->SetEnd(n86);
|
| -
|
| - ComputeAndVerifySchedule(83);
|
| -}
|
| -
|
| -
|
| -TEST_F(SchedulerTest, BuildScheduleSimpleLoopWithCodeMotion) {
|
| - const Operator* op;
|
| - Unique<HeapObject> unique_constant =
|
| - Unique<HeapObject>::CreateImmovable(factory()->undefined_value());
|
| -
|
| - // Manually transcripted code for:
|
| - // function turbo_fan_test(a, b, c) {
|
| - // while (a < b) {
|
| - // a += b + c;
|
| - // }
|
| - // return a;
|
| - // }
|
| - Node* nil = graph()->NewNode(common()->Dead());
|
| - op = common()->End();
|
| - Node* n34 = graph()->NewNode(op, nil);
|
| - USE(n34);
|
| - op = common()->Return();
|
| - Node* n32 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n32);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n14 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n14);
|
| - op = js()->LessThan(LanguageMode::SLOPPY);
|
| - Node* n17 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| - USE(n17);
|
| - op = common()->IfFalse();
|
| - Node* n23 = graph()->NewNode(op, nil);
|
| - USE(n23);
|
| - op = common()->Parameter(1);
|
| - Node* n2 = graph()->NewNode(op, nil);
|
| - USE(n2);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n29 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n29);
|
| - op = common()->Loop(2);
|
| - Node* n13 = graph()->NewNode(op, nil, nil);
|
| - USE(n13);
|
| - op = common()->Parameter(2);
|
| - Node* n3 = graph()->NewNode(op, nil);
|
| - USE(n3);
|
| - op = common()->Parameter(4);
|
| - Node* n6 = graph()->NewNode(op, nil);
|
| - USE(n6);
|
| - op = common()->FrameState(JS_FRAME, BailoutId(-1),
|
| - OutputFrameStateCombine::Ignore());
|
| - Node* n12 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n12);
|
| - op = common()->EffectPhi(2);
|
| - Node* n15 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n15);
|
| - op = common()->Branch();
|
| - Node* n20 = graph()->NewNode(op, nil, nil);
|
| - USE(n20);
|
| - op = common()->Start(3);
|
| - Node* n0 = graph()->NewNode(op);
|
| - USE(n0);
|
| - op = js()->Add(LanguageMode::SLOPPY);
|
| - Node* n27 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| - USE(n27);
|
| - op = common()->IfSuccess();
|
| - Node* n28 = graph()->NewNode(op, nil);
|
| - USE(n28);
|
| - op = common()->IfSuccess();
|
| - Node* n9 = graph()->NewNode(op, nil);
|
| - USE(n9);
|
| - op = common()->IfSuccess();
|
| - Node* n30 = graph()->NewNode(op, nil);
|
| - USE(n30);
|
| - op = common()->StateValues(0);
|
| - Node* n10 = graph()->NewNode(op);
|
| - USE(n10);
|
| - op = common()->NumberConstant(0);
|
| - Node* n11 = graph()->NewNode(op);
|
| - USE(n11);
|
| - op = common()->HeapConstant(unique_constant);
|
| - Node* n5 = graph()->NewNode(op);
|
| - USE(n5);
|
| - op = js()->StackCheck();
|
| - Node* n8 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n8);
|
| - op = js()->ToBoolean();
|
| - Node* n19 = graph()->NewNode(op, nil, nil);
|
| - USE(n19);
|
| - op = common()->IfSuccess();
|
| - Node* n18 = graph()->NewNode(op, nil);
|
| - USE(n18);
|
| - op = common()->Parameter(3);
|
| - Node* n4 = graph()->NewNode(op, nil);
|
| - USE(n4);
|
| - op = js()->StackCheck();
|
| - Node* n25 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n25);
|
| - op = common()->IfSuccess();
|
| - Node* n26 = graph()->NewNode(op, nil);
|
| - USE(n26);
|
| - op = common()->IfTrue();
|
| - Node* n21 = graph()->NewNode(op, nil);
|
| - USE(n21);
|
| - n34->ReplaceInput(0, n32);
|
| - n32->ReplaceInput(0, n14);
|
| - n32->ReplaceInput(1, n17);
|
| - n32->ReplaceInput(2, n23);
|
| - n14->ReplaceInput(0, n2);
|
| - n14->ReplaceInput(1, n29);
|
| - n14->ReplaceInput(2, n13);
|
| - n17->ReplaceInput(0, n14);
|
| - n17->ReplaceInput(1, n3);
|
| - n17->ReplaceInput(2, n6);
|
| - n17->ReplaceInput(3, n12);
|
| - n17->ReplaceInput(4, n15);
|
| - n17->ReplaceInput(5, n13);
|
| - n23->ReplaceInput(0, n20);
|
| - n2->ReplaceInput(0, n0);
|
| - n29->ReplaceInput(0, n14);
|
| - n29->ReplaceInput(1, n27);
|
| - n29->ReplaceInput(2, n6);
|
| - n29->ReplaceInput(3, n12);
|
| - n29->ReplaceInput(4, n12);
|
| - n29->ReplaceInput(5, n27);
|
| - n29->ReplaceInput(6, n28);
|
| - n13->ReplaceInput(0, n9);
|
| - n13->ReplaceInput(1, n30);
|
| - n3->ReplaceInput(0, n0);
|
| - n6->ReplaceInput(0, n0);
|
| - n12->ReplaceInput(0, n10);
|
| - n12->ReplaceInput(1, n10);
|
| - n12->ReplaceInput(2, n10);
|
| - n12->ReplaceInput(3, n11);
|
| - n12->ReplaceInput(4, n5);
|
| - n15->ReplaceInput(0, n8);
|
| - n15->ReplaceInput(1, n29);
|
| - n15->ReplaceInput(2, n13);
|
| - n20->ReplaceInput(0, n19);
|
| - n20->ReplaceInput(1, n18);
|
| - n27->ReplaceInput(0, n3);
|
| - n27->ReplaceInput(1, n4);
|
| - n27->ReplaceInput(2, n6);
|
| - n27->ReplaceInput(3, n12);
|
| - n27->ReplaceInput(4, n12);
|
| - n27->ReplaceInput(5, n25);
|
| - n27->ReplaceInput(6, n26);
|
| - n28->ReplaceInput(0, n27);
|
| - n9->ReplaceInput(0, n8);
|
| - n30->ReplaceInput(0, n29);
|
| - n8->ReplaceInput(0, n6);
|
| - n8->ReplaceInput(1, n12);
|
| - n8->ReplaceInput(2, n0);
|
| - n8->ReplaceInput(3, n0);
|
| - n19->ReplaceInput(0, n17);
|
| - n19->ReplaceInput(1, n6);
|
| - n18->ReplaceInput(0, n17);
|
| - n4->ReplaceInput(0, n0);
|
| - n25->ReplaceInput(0, n6);
|
| - n25->ReplaceInput(1, n12);
|
| - n25->ReplaceInput(2, n17);
|
| - n25->ReplaceInput(3, n21);
|
| - n26->ReplaceInput(0, n25);
|
| - n21->ReplaceInput(0, n20);
|
| -
|
| - graph()->SetStart(n0);
|
| - graph()->SetEnd(n34);
|
| -
|
| - ComputeAndVerifySchedule(30);
|
| -}
|
| -
|
| -
|
| namespace {
|
|
|
| Node* CreateDiamond(Graph* graph, CommonOperatorBuilder* common, Node* cond) {
|
|
|