| Index: test/unittests/compiler/scheduler-unittest.cc
|
| diff --git a/test/unittests/compiler/scheduler-unittest.cc b/test/unittests/compiler/scheduler-unittest.cc
|
| index eeb5bbc4d69f5cca84cd918c1bac3f38cedef4d7..ba2e0b0c65b84ea62e1f97a685d7e2bbf9388c4c 100644
|
| --- a/test/unittests/compiler/scheduler-unittest.cc
|
| +++ b/test/unittests/compiler/scheduler-unittest.cc
|
| @@ -24,7 +24,7 @@ namespace v8 {
|
| namespace internal {
|
| namespace compiler {
|
|
|
| -class SchedulerTest : public TestWithZone {
|
| +class SchedulerTest : public TestWithIsolateAndZone {
|
| public:
|
| SchedulerTest()
|
| : graph_(zone()), common_(zone()), simplified_(zone()), js_(zone()) {}
|
| @@ -673,9 +673,9 @@ TEST_F(SchedulerTest, BuildScheduleIfSplit) {
|
|
|
|
|
| TEST_F(SchedulerTest, BuildScheduleIfSplitWithEffects) {
|
| - FLAG_turbo_deoptimization = false;
|
| -
|
| 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) {
|
| @@ -685,135 +685,216 @@ TEST_F(SchedulerTest, BuildScheduleIfSplitWithEffects) {
|
| // return c * c - a;
|
| // }
|
| // }
|
| - op = common()->Start(0);
|
| - Node* n0 = graph()->NewNode(op);
|
| - USE(n0);
|
| Node* nil = graph()->NewNode(common()->Dead());
|
| op = common()->End();
|
| - Node* n23 = graph()->NewNode(op, nil);
|
| - USE(n23);
|
| + Node* n39 = graph()->NewNode(op, nil);
|
| + USE(n39);
|
| op = common()->Merge(2);
|
| - Node* n22 = graph()->NewNode(op, nil, nil);
|
| - USE(n22);
|
| + Node* n37 = graph()->NewNode(op, nil, nil);
|
| + USE(n37);
|
| op = common()->Return();
|
| - Node* n16 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n16);
|
| + 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();
|
| - Node* n15 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n15);
|
| + 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();
|
| - Node* n14 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n14);
|
| + 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();
|
| + 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 = js()->Add();
|
| - Node* n11 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n11);
|
| - op = common()->Parameter(0);
|
| - Node* n2 = graph()->NewNode(op, n0);
|
| + op = common()->IfSuccess();
|
| + Node* n26 = graph()->NewNode(op, nil);
|
| + USE(n26);
|
| + op = js()->Multiply();
|
| + 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);
|
| - n11->ReplaceInput(0, n2);
|
| - op = common()->Parameter(0);
|
| - Node* n3 = graph()->NewNode(op, n0);
|
| - USE(n3);
|
| - n11->ReplaceInput(1, n3);
|
| - op = &kHeapConstant;
|
| - Node* n7 = graph()->NewNode(op);
|
| - USE(n7);
|
| - n11->ReplaceInput(2, n7);
|
| + op = common()->IfSuccess();
|
| + Node* n33 = graph()->NewNode(op, nil);
|
| + USE(n33);
|
| + op = js()->Subtract();
|
| + 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();
|
| - Node* n8 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n8);
|
| - n8->ReplaceInput(0, n2);
|
| - n8->ReplaceInput(1, n3);
|
| - n8->ReplaceInput(2, n7);
|
| - n8->ReplaceInput(3, n0);
|
| - n8->ReplaceInput(4, n0);
|
| - n11->ReplaceInput(3, n8);
|
| - op = common()->IfTrue();
|
| + 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();
|
| + Node* n19 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| + USE(n19);
|
| + op = js()->Multiply();
|
| + 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* n9 = graph()->NewNode(op, nil, nil);
|
| - USE(n9);
|
| - n9->ReplaceInput(0, n8);
|
| - n9->ReplaceInput(1, n0);
|
| - n10->ReplaceInput(0, n9);
|
| - n11->ReplaceInput(4, n10);
|
| + 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);
|
| - op = js()->Multiply();
|
| - Node* n12 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n12);
|
| - op = common()->Parameter(0);
|
| - Node* n4 = graph()->NewNode(op, n0);
|
| - USE(n4);
|
| - n12->ReplaceInput(0, n4);
|
| - n12->ReplaceInput(1, n4);
|
| - n12->ReplaceInput(2, n7);
|
| - n12->ReplaceInput(3, n11);
|
| - n12->ReplaceInput(4, n10);
|
| - n13->ReplaceInput(1, n12);
|
| - n13->ReplaceInput(2, n7);
|
| + n13->ReplaceInput(1, n11);
|
| + n13->ReplaceInput(2, n11);
|
| n13->ReplaceInput(3, n12);
|
| - n13->ReplaceInput(4, n10);
|
| - n14->ReplaceInput(0, n13);
|
| - n14->ReplaceInput(1, n2);
|
| - n14->ReplaceInput(2, n7);
|
| - n14->ReplaceInput(3, n13);
|
| - n14->ReplaceInput(4, n10);
|
| - n15->ReplaceInput(0, n14);
|
| - op = common()->Parameter(0);
|
| - Node* n5 = graph()->NewNode(op, n0);
|
| - USE(n5);
|
| - n15->ReplaceInput(1, n5);
|
| + 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, n14);
|
| - n15->ReplaceInput(4, n10);
|
| - n16->ReplaceInput(0, n15);
|
| - n16->ReplaceInput(1, n15);
|
| - n16->ReplaceInput(2, n10);
|
| - n22->ReplaceInput(0, n16);
|
| - op = common()->Return();
|
| - Node* n21 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n21);
|
| - op = js()->Subtract();
|
| - Node* n20 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n20);
|
| - op = js()->Multiply();
|
| - Node* n19 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n19);
|
| - n19->ReplaceInput(0, n4);
|
| - n19->ReplaceInput(1, n4);
|
| + 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, n8);
|
| - op = common()->IfFalse();
|
| - Node* n18 = graph()->NewNode(op, nil);
|
| - USE(n18);
|
| - n18->ReplaceInput(0, n9);
|
| - n19->ReplaceInput(4, n18);
|
| + 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);
|
| - n20->ReplaceInput(1, n2);
|
| - n20->ReplaceInput(2, n7);
|
| - n20->ReplaceInput(3, n19);
|
| - n20->ReplaceInput(4, n18);
|
| - n21->ReplaceInput(0, n20);
|
| - n21->ReplaceInput(1, n20);
|
| - n21->ReplaceInput(2, n18);
|
| - n22->ReplaceInput(1, n21);
|
| - n23->ReplaceInput(0, n22);
|
| + n16->ReplaceInput(0, n15);
|
|
|
| graph()->SetStart(n0);
|
| - graph()->SetEnd(n23);
|
| + graph()->SetEnd(n39);
|
|
|
| - ComputeAndVerifySchedule(20);
|
| + ComputeAndVerifySchedule(34);
|
| }
|
|
|
|
|
| TEST_F(SchedulerTest, BuildScheduleSimpleLoop) {
|
| - FLAG_turbo_deoptimization = false;
|
| -
|
| const Operator* op;
|
| + Unique<HeapObject> unique_constant =
|
| + Unique<HeapObject>::CreateImmovable(factory()->undefined_value());
|
|
|
| // Manually transcripted code for:
|
| // function turbo_fan_test(a, b) {
|
| @@ -822,103 +903,161 @@ TEST_F(SchedulerTest, BuildScheduleSimpleLoop) {
|
| // }
|
| // return a;
|
| // }
|
| - op = common()->Start(0);
|
| - Node* n0 = graph()->NewNode(op);
|
| - USE(n0);
|
| Node* nil = graph()->NewNode(common()->Dead());
|
| op = common()->End();
|
| - Node* n20 = graph()->NewNode(op, nil);
|
| - USE(n20);
|
| + Node* n34 = graph()->NewNode(op, nil);
|
| + USE(n34);
|
| op = common()->Return();
|
| - Node* n19 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n19);
|
| + Node* n32 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n32);
|
| op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n8 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n8);
|
| - op = common()->Parameter(0);
|
| - Node* n2 = graph()->NewNode(op, n0);
|
| + Node* n13 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n13);
|
| + op = js()->LessThan();
|
| + 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);
|
| - n8->ReplaceInput(0, n2);
|
| op = js()->Add();
|
| - Node* n18 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n18);
|
| - op = js()->ToNumber();
|
| - Node* n16 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n16);
|
| - n16->ReplaceInput(0, n8);
|
| - op = &kHeapConstant;
|
| - Node* n5 = graph()->NewNode(op);
|
| - USE(n5);
|
| - n16->ReplaceInput(1, n5);
|
| - op = js()->LessThan();
|
| - Node* n12 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| + 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);
|
| - n12->ReplaceInput(0, n8);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n9 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n9);
|
| - op = common()->Parameter(0);
|
| - Node* n3 = graph()->NewNode(op, n0);
|
| + op = common()->Parameter(2);
|
| + Node* n3 = graph()->NewNode(op, nil);
|
| USE(n3);
|
| - n9->ReplaceInput(0, n3);
|
| - n9->ReplaceInput(1, n9);
|
| - op = common()->Loop(2);
|
| - Node* n6 = graph()->NewNode(op, nil, nil);
|
| - USE(n6);
|
| - n6->ReplaceInput(0, n0);
|
| - op = common()->IfTrue();
|
| - Node* n14 = graph()->NewNode(op, nil);
|
| + 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* n13 = graph()->NewNode(op, nil, nil);
|
| - USE(n13);
|
| - n13->ReplaceInput(0, n12);
|
| - n13->ReplaceInput(1, n6);
|
| - n14->ReplaceInput(0, n13);
|
| - n6->ReplaceInput(1, n14);
|
| - n9->ReplaceInput(2, n6);
|
| - n12->ReplaceInput(1, n9);
|
| - n12->ReplaceInput(2, n5);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n10 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n10);
|
| - n10->ReplaceInput(0, n0);
|
| - n10->ReplaceInput(1, n18);
|
| - n10->ReplaceInput(2, n6);
|
| - n12->ReplaceInput(3, n10);
|
| - n12->ReplaceInput(4, n6);
|
| - n16->ReplaceInput(2, n12);
|
| - n16->ReplaceInput(3, n14);
|
| - n18->ReplaceInput(0, n16);
|
| + 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* n17 = graph()->NewNode(op);
|
| + 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);
|
| - n18->ReplaceInput(1, n17);
|
| - n18->ReplaceInput(2, n5);
|
| - n18->ReplaceInput(3, n16);
|
| - n18->ReplaceInput(4, n14);
|
| - n8->ReplaceInput(1, n18);
|
| - n8->ReplaceInput(2, n6);
|
| - n19->ReplaceInput(0, n8);
|
| - n19->ReplaceInput(1, n12);
|
| - op = common()->IfFalse();
|
| - Node* n15 = graph()->NewNode(op, nil);
|
| - USE(n15);
|
| - n15->ReplaceInput(0, n13);
|
| - n19->ReplaceInput(2, n15);
|
| + 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(n20);
|
| + graph()->SetEnd(n34);
|
|
|
| - ComputeAndVerifySchedule(19);
|
| + ComputeAndVerifySchedule(30);
|
| }
|
|
|
|
|
| TEST_F(SchedulerTest, BuildScheduleComplexLoops) {
|
| - FLAG_turbo_deoptimization = false;
|
| -
|
| const Operator* op;
|
| + Unique<HeapObject> unique_constant =
|
| + Unique<HeapObject>::CreateImmovable(factory()->undefined_value());
|
|
|
| // Manually transcripted code for:
|
| // function turbo_fan_test(a, b, c) {
|
| @@ -933,232 +1072,332 @@ TEST_F(SchedulerTest, BuildScheduleComplexLoops) {
|
| // }
|
| // return a;
|
| // }
|
| - op = common()->Start(0);
|
| - Node* n0 = graph()->NewNode(op);
|
| - USE(n0);
|
| Node* nil = graph()->NewNode(common()->Dead());
|
| op = common()->End();
|
| - Node* n46 = graph()->NewNode(op, nil);
|
| - USE(n46);
|
| + Node* n71 = graph()->NewNode(op, nil);
|
| + USE(n71);
|
| op = common()->Return();
|
| - Node* n45 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n45);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n35 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n35);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n9 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n9);
|
| - op = common()->Parameter(0);
|
| - Node* n2 = graph()->NewNode(op, n0);
|
| - USE(n2);
|
| - n9->ReplaceInput(0, n2);
|
| + Node* n69 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n69);
|
| op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n23 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n23);
|
| - op = js()->Add();
|
| - Node* n20 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n20);
|
| - op = js()->ToNumber();
|
| - Node* n18 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n18);
|
| - n18->ReplaceInput(0, n9);
|
| - op = &kHeapConstant;
|
| - Node* n6 = graph()->NewNode(op);
|
| - USE(n6);
|
| - n18->ReplaceInput(1, n6);
|
| + Node* n53 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n53);
|
| op = js()->LessThan();
|
| - Node* n14 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n14);
|
| - n14->ReplaceInput(0, n9);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n10 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n10);
|
| - op = common()->Parameter(0);
|
| - Node* n3 = graph()->NewNode(op, n0);
|
| - USE(n3);
|
| - n10->ReplaceInput(0, n3);
|
| + 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* n24 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n24);
|
| - n24->ReplaceInput(0, n10);
|
| - n24->ReplaceInput(1, n24);
|
| + Node* n14 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n14);
|
| + op = js()->Add();
|
| + Node* n66 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| + USE(n66);
|
| op = common()->Loop(2);
|
| - Node* n21 = graph()->NewNode(op, nil, nil);
|
| - USE(n21);
|
| - op = common()->IfTrue();
|
| - Node* n16 = graph()->NewNode(op, nil);
|
| - USE(n16);
|
| + 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* n15 = graph()->NewNode(op, nil, nil);
|
| - USE(n15);
|
| - n15->ReplaceInput(0, n14);
|
| + Node* n58 = graph()->NewNode(op, nil, nil);
|
| + USE(n58);
|
| + op = common()->Parameter(1);
|
| + Node* n2 = graph()->NewNode(op, nil);
|
| + USE(n2);
|
| + op = js()->Add();
|
| + Node* n31 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| + USE(n31);
|
| op = common()->Loop(2);
|
| - Node* n7 = graph()->NewNode(op, nil, nil);
|
| - USE(n7);
|
| - n7->ReplaceInput(0, n0);
|
| + 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* n30 = graph()->NewNode(op, nil);
|
| - USE(n30);
|
| - op = common()->Branch();
|
| - Node* n28 = graph()->NewNode(op, nil, nil);
|
| - USE(n28);
|
| - op = js()->LessThan();
|
| - Node* n27 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n27);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n25 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n25);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n11 = graph()->NewNode(op, nil, nil, nil);
|
| + 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()->Parameter(0);
|
| - Node* n4 = graph()->NewNode(op, n0);
|
| - USE(n4);
|
| - n11->ReplaceInput(0, n4);
|
| - n11->ReplaceInput(1, n25);
|
| - n11->ReplaceInput(2, n7);
|
| - n25->ReplaceInput(0, n11);
|
| - op = js()->Add();
|
| - Node* n32 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n32);
|
| + op = common()->HeapConstant(unique_constant);
|
| + Node* n5 = graph()->NewNode(op);
|
| + USE(n5);
|
| + op = js()->LessThan();
|
| + 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* n31 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n31);
|
| - n31->ReplaceInput(0, n25);
|
| - n31->ReplaceInput(1, n6);
|
| - n31->ReplaceInput(2, n27);
|
| - op = common()->IfTrue();
|
| + 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);
|
| - n29->ReplaceInput(0, n28);
|
| - n31->ReplaceInput(3, n29);
|
| - n32->ReplaceInput(0, n31);
|
| - op = common()->NumberConstant(0);
|
| - Node* n19 = graph()->NewNode(op);
|
| - USE(n19);
|
| - n32->ReplaceInput(1, n19);
|
| - n32->ReplaceInput(2, n6);
|
| - n32->ReplaceInput(3, n31);
|
| - n32->ReplaceInput(4, n29);
|
| - n25->ReplaceInput(1, n32);
|
| - n25->ReplaceInput(2, n21);
|
| - n27->ReplaceInput(0, n25);
|
| - n27->ReplaceInput(1, n24);
|
| - n27->ReplaceInput(2, n6);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n26 = graph()->NewNode(op, nil, nil, nil);
|
| + 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);
|
| - n26->ReplaceInput(0, n20);
|
| - n26->ReplaceInput(1, n32);
|
| - n26->ReplaceInput(2, n21);
|
| - n27->ReplaceInput(3, n26);
|
| - n27->ReplaceInput(4, n21);
|
| - n28->ReplaceInput(0, n27);
|
| - n28->ReplaceInput(1, n21);
|
| - n30->ReplaceInput(0, n28);
|
| - n7->ReplaceInput(1, n30);
|
| - n15->ReplaceInput(1, n7);
|
| - n16->ReplaceInput(0, n15);
|
| - n21->ReplaceInput(0, n16);
|
| - n21->ReplaceInput(1, n29);
|
| - n24->ReplaceInput(2, n21);
|
| - n10->ReplaceInput(1, n24);
|
| - n10->ReplaceInput(2, n7);
|
| - n14->ReplaceInput(1, n10);
|
| - n14->ReplaceInput(2, n6);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n12 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n12);
|
| - n12->ReplaceInput(0, n0);
|
| - n12->ReplaceInput(1, n27);
|
| - n12->ReplaceInput(2, n7);
|
| - n14->ReplaceInput(3, n12);
|
| - n14->ReplaceInput(4, n7);
|
| - n18->ReplaceInput(2, n14);
|
| - n18->ReplaceInput(3, n16);
|
| - n20->ReplaceInput(0, n18);
|
| - n20->ReplaceInput(1, n19);
|
| - n20->ReplaceInput(2, n6);
|
| - n20->ReplaceInput(3, n18);
|
| - n20->ReplaceInput(4, n16);
|
| - n23->ReplaceInput(0, n20);
|
| - n23->ReplaceInput(1, n23);
|
| - n23->ReplaceInput(2, n21);
|
| - n9->ReplaceInput(1, n23);
|
| - n9->ReplaceInput(2, n7);
|
| - n35->ReplaceInput(0, n9);
|
| - op = js()->Add();
|
| - Node* n44 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n44);
|
| - n44->ReplaceInput(0, n35);
|
| - op = common()->NumberConstant(0);
|
| - Node* n43 = graph()->NewNode(op);
|
| - USE(n43);
|
| - n44->ReplaceInput(1, n43);
|
| - n44->ReplaceInput(2, n6);
|
| - op = js()->LessThan();
|
| - Node* n39 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| + 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);
|
| - n39->ReplaceInput(0, n35);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n36 = graph()->NewNode(op, nil, nil, nil);
|
| + 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();
|
| + Node* n36 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil);
|
| USE(n36);
|
| - n36->ReplaceInput(0, n10);
|
| - n36->ReplaceInput(1, 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()->IfFalse();
|
| - Node* n17 = graph()->NewNode(op, nil);
|
| - USE(n17);
|
| - n17->ReplaceInput(0, n15);
|
| - n33->ReplaceInput(0, n17);
|
| + op = common()->Phi(kMachAnyTagged, 2);
|
| + Node* n15 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n15);
|
| + op = js()->Add();
|
| + 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* n41 = graph()->NewNode(op, nil);
|
| - USE(n41);
|
| - op = common()->Branch();
|
| - Node* n40 = graph()->NewNode(op, nil, nil);
|
| + Node* n40 = graph()->NewNode(op, nil);
|
| USE(n40);
|
| - n40->ReplaceInput(0, n39);
|
| - n40->ReplaceInput(1, n33);
|
| - n41->ReplaceInput(0, n40);
|
| - n33->ReplaceInput(1, n41);
|
| - n36->ReplaceInput(2, n33);
|
| - n39->ReplaceInput(1, n36);
|
| - n39->ReplaceInput(2, n6);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n38 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n38);
|
| - n38->ReplaceInput(0, n14);
|
| - n38->ReplaceInput(1, n44);
|
| - n38->ReplaceInput(2, n33);
|
| - n39->ReplaceInput(3, n38);
|
| - n39->ReplaceInput(4, n33);
|
| - n44->ReplaceInput(3, n39);
|
| - n44->ReplaceInput(4, n41);
|
| - n35->ReplaceInput(1, n44);
|
| + 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);
|
| - n45->ReplaceInput(0, n35);
|
| - n45->ReplaceInput(1, n39);
|
| - op = common()->IfFalse();
|
| - Node* n42 = graph()->NewNode(op, nil);
|
| - USE(n42);
|
| - n42->ReplaceInput(0, n40);
|
| - n45->ReplaceInput(2, n42);
|
| - n46->ReplaceInput(0, n45);
|
| + 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(n46);
|
| + graph()->SetEnd(n71);
|
|
|
| - ComputeAndVerifySchedule(46);
|
| + ComputeAndVerifySchedule(65);
|
| }
|
|
|
|
|
| TEST_F(SchedulerTest, BuildScheduleBreakAndContinue) {
|
| - FLAG_turbo_deoptimization = false;
|
| -
|
| const Operator* op;
|
| + Unique<HeapObject> unique_constant =
|
| + Unique<HeapObject>::CreateImmovable(factory()->undefined_value());
|
|
|
| // Manually transcripted code for:
|
| // function turbo_fan_test(a, b, c) {
|
| @@ -1175,312 +1414,430 @@ TEST_F(SchedulerTest, BuildScheduleBreakAndContinue) {
|
| // }
|
| // return a + d;
|
| // }
|
| - op = common()->Start(0);
|
| - Node* n0 = graph()->NewNode(op);
|
| - USE(n0);
|
| Node* nil = graph()->NewNode(common()->Dead());
|
| op = common()->End();
|
| - Node* n58 = graph()->NewNode(op, nil);
|
| - USE(n58);
|
| + Node* n86 = graph()->NewNode(op, nil);
|
| + USE(n86);
|
| op = common()->Return();
|
| - Node* n57 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n57);
|
| + Node* n84 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n84);
|
| op = js()->Add();
|
| - Node* n56 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n56);
|
| + 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* n10 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n10);
|
| - op = common()->Parameter(0);
|
| - Node* n2 = graph()->NewNode(op, n0);
|
| - USE(n2);
|
| - n10->ReplaceInput(0, n2);
|
| + Node* n15 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n15);
|
| op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n25 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n25);
|
| - op = js()->Add();
|
| - Node* n22 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n22);
|
| - op = js()->ToNumber();
|
| - Node* n20 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n20);
|
| - n20->ReplaceInput(0, n10);
|
| - op = &kHeapConstant;
|
| - Node* n6 = graph()->NewNode(op);
|
| + Node* n17 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n17);
|
| + op = common()->Parameter(4);
|
| + Node* n6 = graph()->NewNode(op, nil);
|
| USE(n6);
|
| - n20->ReplaceInput(1, 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();
|
| - Node* n16 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n16);
|
| - n16->ReplaceInput(0, n10);
|
| + 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* n11 = graph()->NewNode(op, nil, nil, nil);
|
| + 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()->Parameter(0);
|
| - Node* n3 = graph()->NewNode(op, n0);
|
| - USE(n3);
|
| - n11->ReplaceInput(0, n3);
|
| op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n26 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n26);
|
| - n26->ReplaceInput(0, n11);
|
| - n26->ReplaceInput(1, n26);
|
| - op = common()->Loop(2);
|
| - Node* n23 = graph()->NewNode(op, nil, nil);
|
| - USE(n23);
|
| - op = common()->IfTrue();
|
| - Node* n18 = graph()->NewNode(op, nil);
|
| + 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* n17 = graph()->NewNode(op, nil, nil);
|
| - USE(n17);
|
| - n17->ReplaceInput(0, n16);
|
| + Node* n22 = graph()->NewNode(op, nil, nil);
|
| + USE(n22);
|
| + op = js()->Add();
|
| + Node* n32 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| + USE(n32);
|
| + op = js()->Add();
|
| + Node* n64 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| + USE(n64);
|
| op = common()->Loop(2);
|
| - Node* n8 = graph()->NewNode(op, nil, nil);
|
| + 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();
|
| + 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);
|
| - n8->ReplaceInput(0, n0);
|
| + 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* n53 = graph()->NewNode(op, nil, nil);
|
| - USE(n53);
|
| + Node* n45 = graph()->NewNode(op, nil, nil);
|
| + USE(n45);
|
| + op = common()->IfTrue();
|
| + Node* n23 = graph()->NewNode(op, nil);
|
| + USE(n23);
|
| + op = js()->Add();
|
| + 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();
|
| + 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* n48 = graph()->NewNode(op, nil, nil);
|
| - USE(n48);
|
| - op = js()->Equal();
|
| - Node* n47 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n47);
|
| - n47->ReplaceInput(0, n25);
|
| - op = common()->NumberConstant(0);
|
| - Node* n46 = graph()->NewNode(op);
|
| + Node* n41 = graph()->NewNode(op, nil, nil);
|
| + USE(n41);
|
| + op = js()->StackCheck();
|
| + Node* n46 = graph()->NewNode(op, nil, nil, nil, nil);
|
| USE(n46);
|
| - n47->ReplaceInput(1, n46);
|
| - n47->ReplaceInput(2, n6);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n42 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n42);
|
| - op = js()->LessThan();
|
| - Node* n30 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n30);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n27 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n27);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n12 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n12);
|
| - op = common()->Parameter(0);
|
| - Node* n4 = graph()->NewNode(op, n0);
|
| - USE(n4);
|
| - n12->ReplaceInput(0, n4);
|
| + op = common()->IfSuccess();
|
| + Node* n47 = graph()->NewNode(op, nil);
|
| + USE(n47);
|
| op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n41 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n41);
|
| - n41->ReplaceInput(0, n27);
|
| - op = js()->Add();
|
| - Node* n35 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n35);
|
| - op = js()->ToNumber();
|
| - Node* n34 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n34);
|
| - n34->ReplaceInput(0, n27);
|
| - n34->ReplaceInput(1, n6);
|
| - n34->ReplaceInput(2, n30);
|
| - op = common()->IfTrue();
|
| - Node* n32 = graph()->NewNode(op, nil);
|
| - USE(n32);
|
| - op = common()->Branch();
|
| - Node* n31 = graph()->NewNode(op, nil, nil);
|
| - USE(n31);
|
| - n31->ReplaceInput(0, n30);
|
| - n31->ReplaceInput(1, n23);
|
| - n32->ReplaceInput(0, n31);
|
| - n34->ReplaceInput(3, n32);
|
| - n35->ReplaceInput(0, n34);
|
| - op = common()->NumberConstant(0);
|
| - Node* n21 = graph()->NewNode(op);
|
| - USE(n21);
|
| - n35->ReplaceInput(1, n21);
|
| - n35->ReplaceInput(2, n6);
|
| - n35->ReplaceInput(3, n34);
|
| - n35->ReplaceInput(4, n32);
|
| - n41->ReplaceInput(1, n35);
|
| - op = common()->Merge(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()->IfFalse();
|
| - Node* n33 = graph()->NewNode(op, nil);
|
| - USE(n33);
|
| - n33->ReplaceInput(0, n31);
|
| - n40->ReplaceInput(0, n33);
|
| - op = common()->IfTrue();
|
| + op = common()->IfSuccess();
|
| Node* n39 = graph()->NewNode(op, nil);
|
| USE(n39);
|
| - op = common()->Branch();
|
| - Node* n38 = graph()->NewNode(op, nil, nil);
|
| - USE(n38);
|
| - op = js()->Equal();
|
| - Node* n37 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n37);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n28 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n28);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n13 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n13);
|
| - op = common()->NumberConstant(0);
|
| - Node* n7 = graph()->NewNode(op);
|
| - USE(n7);
|
| - n13->ReplaceInput(0, n7);
|
| + 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* n54 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n54);
|
| - n54->ReplaceInput(0, n28);
|
| - op = js()->Add();
|
| - Node* n52 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n52);
|
| - op = js()->ToNumber();
|
| - Node* n51 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n51);
|
| - n51->ReplaceInput(0, n28);
|
| - n51->ReplaceInput(1, n6);
|
| - n51->ReplaceInput(2, n47);
|
| - op = common()->IfFalse();
|
| - Node* n50 = graph()->NewNode(op, nil);
|
| - USE(n50);
|
| - n50->ReplaceInput(0, n48);
|
| - n51->ReplaceInput(3, n50);
|
| - n52->ReplaceInput(0, n51);
|
| - n52->ReplaceInput(1, n21);
|
| + 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, n51);
|
| + n52->ReplaceInput(3, n12);
|
| n52->ReplaceInput(4, n50);
|
| - n54->ReplaceInput(1, n52);
|
| - n54->ReplaceInput(2, n53);
|
| - n13->ReplaceInput(1, n54);
|
| - n13->ReplaceInput(2, n8);
|
| - n28->ReplaceInput(0, n13);
|
| - n28->ReplaceInput(1, n28);
|
| - n28->ReplaceInput(2, n23);
|
| - n37->ReplaceInput(0, n28);
|
| - op = common()->NumberConstant(0);
|
| - Node* n36 = graph()->NewNode(op);
|
| - USE(n36);
|
| - n37->ReplaceInput(1, n36);
|
| - n37->ReplaceInput(2, n6);
|
| - n37->ReplaceInput(3, n35);
|
| - n37->ReplaceInput(4, n32);
|
| - n38->ReplaceInput(0, n37);
|
| - n38->ReplaceInput(1, n32);
|
| - n39->ReplaceInput(0, n38);
|
| - n40->ReplaceInput(1, n39);
|
| - n41->ReplaceInput(2, n40);
|
| - n12->ReplaceInput(1, n41);
|
| - n12->ReplaceInput(2, n8);
|
| - n27->ReplaceInput(0, n12);
|
| - n27->ReplaceInput(1, n35);
|
| - n27->ReplaceInput(2, n23);
|
| - n30->ReplaceInput(0, n27);
|
| - n30->ReplaceInput(1, n26);
|
| - n30->ReplaceInput(2, n6);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n29 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n29);
|
| - n29->ReplaceInput(0, n22);
|
| - op = js()->Add();
|
| - Node* n45 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n45);
|
| - op = js()->ToNumber();
|
| - Node* n44 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n44);
|
| - n44->ReplaceInput(0, n25);
|
| - n44->ReplaceInput(1, n6);
|
| - n44->ReplaceInput(2, n37);
|
| - op = common()->IfFalse();
|
| - Node* n43 = graph()->NewNode(op, nil);
|
| - USE(n43);
|
| - n43->ReplaceInput(0, n38);
|
| - n44->ReplaceInput(3, n43);
|
| + 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, n21);
|
| - n45->ReplaceInput(2, n6);
|
| - n45->ReplaceInput(3, n44);
|
| - n45->ReplaceInput(4, n43);
|
| - n29->ReplaceInput(1, n45);
|
| - n29->ReplaceInput(2, n23);
|
| - n30->ReplaceInput(3, n29);
|
| - n30->ReplaceInput(4, n23);
|
| - n42->ReplaceInput(0, n30);
|
| - n42->ReplaceInput(1, n37);
|
| - n42->ReplaceInput(2, n40);
|
| - n47->ReplaceInput(3, n42);
|
| - n47->ReplaceInput(4, n40);
|
| - n48->ReplaceInput(0, n47);
|
| - n48->ReplaceInput(1, n40);
|
| + 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);
|
| - n53->ReplaceInput(0, n49);
|
| - n53->ReplaceInput(1, n50);
|
| - n8->ReplaceInput(1, n53);
|
| - n17->ReplaceInput(1, n8);
|
| - n18->ReplaceInput(0, n17);
|
| - n23->ReplaceInput(0, n18);
|
| - n23->ReplaceInput(1, n43);
|
| - n26->ReplaceInput(2, n23);
|
| - n11->ReplaceInput(1, n26);
|
| - n11->ReplaceInput(2, n8);
|
| - n16->ReplaceInput(1, n11);
|
| - n16->ReplaceInput(2, n6);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n14 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n14);
|
| - n14->ReplaceInput(0, n0);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n55 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n55);
|
| - n55->ReplaceInput(0, n47);
|
| - n55->ReplaceInput(1, n52);
|
| - n55->ReplaceInput(2, n53);
|
| - n14->ReplaceInput(1, n55);
|
| - n14->ReplaceInput(2, n8);
|
| - n16->ReplaceInput(3, n14);
|
| - n16->ReplaceInput(4, n8);
|
| - n20->ReplaceInput(2, n16);
|
| - n20->ReplaceInput(3, n18);
|
| - n22->ReplaceInput(0, n20);
|
| - n22->ReplaceInput(1, n21);
|
| - n22->ReplaceInput(2, n6);
|
| - n22->ReplaceInput(3, n20);
|
| - n22->ReplaceInput(4, n18);
|
| - n25->ReplaceInput(0, n22);
|
| - n25->ReplaceInput(1, n45);
|
| - n25->ReplaceInput(2, n23);
|
| - n10->ReplaceInput(1, n25);
|
| - n10->ReplaceInput(2, n8);
|
| - n56->ReplaceInput(0, n10);
|
| - n56->ReplaceInput(1, n13);
|
| - n56->ReplaceInput(2, n6);
|
| - n56->ReplaceInput(3, n16);
|
| - op = common()->IfFalse();
|
| - Node* n19 = graph()->NewNode(op, nil);
|
| - USE(n19);
|
| - n19->ReplaceInput(0, n17);
|
| - n56->ReplaceInput(4, n19);
|
| - n57->ReplaceInput(0, n56);
|
| - n57->ReplaceInput(1, n56);
|
| - n57->ReplaceInput(2, n19);
|
| - n58->ReplaceInput(0, n57);
|
| + 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(n58);
|
| + graph()->SetEnd(n86);
|
|
|
| - ComputeAndVerifySchedule(62);
|
| + ComputeAndVerifySchedule(83);
|
| }
|
|
|
|
|
| TEST_F(SchedulerTest, BuildScheduleSimpleLoopWithCodeMotion) {
|
| - FLAG_turbo_deoptimization = false;
|
| -
|
| const Operator* op;
|
| + Unique<HeapObject> unique_constant =
|
| + Unique<HeapObject>::CreateImmovable(factory()->undefined_value());
|
|
|
| // Manually transcripted code for:
|
| // function turbo_fan_test(a, b, c) {
|
| @@ -1489,107 +1846,157 @@ TEST_F(SchedulerTest, BuildScheduleSimpleLoopWithCodeMotion) {
|
| // }
|
| // return a;
|
| // }
|
| - op = common()->Start(0);
|
| - Node* n0 = graph()->NewNode(op);
|
| - USE(n0);
|
| Node* nil = graph()->NewNode(common()->Dead());
|
| op = common()->End();
|
| - Node* n22 = graph()->NewNode(op, nil);
|
| - USE(n22);
|
| + Node* n34 = graph()->NewNode(op, nil);
|
| + USE(n34);
|
| op = common()->Return();
|
| - Node* n21 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n21);
|
| + Node* n32 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n32);
|
| op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n9 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n9);
|
| - op = common()->Parameter(0);
|
| - Node* n2 = graph()->NewNode(op, n0);
|
| + Node* n14 = graph()->NewNode(op, nil, nil, nil);
|
| + USE(n14);
|
| + op = js()->LessThan();
|
| + 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);
|
| - n9->ReplaceInput(0, n2);
|
| op = js()->Add();
|
| - Node* n20 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n20);
|
| - n20->ReplaceInput(0, n9);
|
| - op = &kIntAdd;
|
| - Node* n19 = graph()->NewNode(op, nil, nil);
|
| - USE(n19);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n10 = graph()->NewNode(op, nil, nil, nil);
|
| - USE(n10);
|
| - op = common()->Parameter(0);
|
| - Node* n3 = graph()->NewNode(op, n0);
|
| - USE(n3);
|
| - n10->ReplaceInput(0, n3);
|
| - n10->ReplaceInput(1, n10);
|
| + Node* n29 = graph()->NewNode(op, nil, nil, nil, nil, nil, nil, nil);
|
| + USE(n29);
|
| op = common()->Loop(2);
|
| - Node* n7 = graph()->NewNode(op, nil, nil);
|
| - USE(n7);
|
| - n7->ReplaceInput(0, n0);
|
| - op = common()->IfTrue();
|
| - Node* n17 = graph()->NewNode(op, nil);
|
| - USE(n17);
|
| - op = common()->Branch();
|
| - Node* n16 = graph()->NewNode(op, nil, nil);
|
| - USE(n16);
|
| - op = js()->ToBoolean();
|
| - Node* n15 = graph()->NewNode(op, nil, nil, nil, nil);
|
| - USE(n15);
|
| - op = js()->LessThan();
|
| - Node* n14 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| - USE(n14);
|
| - n14->ReplaceInput(0, n9);
|
| - n14->ReplaceInput(1, n10);
|
| - op = &kHeapConstant;
|
| - Node* n6 = graph()->NewNode(op);
|
| + 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);
|
| - n14->ReplaceInput(2, n6);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n12 = graph()->NewNode(op, nil, nil, nil);
|
| + op = common()->FrameState(JS_FRAME, BailoutId(-1),
|
| + OutputFrameStateCombine::Ignore());
|
| + Node* n12 = graph()->NewNode(op, nil, nil, nil, nil, nil);
|
| USE(n12);
|
| - n12->ReplaceInput(0, n0);
|
| - n12->ReplaceInput(1, n20);
|
| - n12->ReplaceInput(2, n7);
|
| - n14->ReplaceInput(3, n12);
|
| - n14->ReplaceInput(4, n7);
|
| - n15->ReplaceInput(0, n14);
|
| - n15->ReplaceInput(1, n6);
|
| - n15->ReplaceInput(2, n14);
|
| - n15->ReplaceInput(3, n7);
|
| - n16->ReplaceInput(0, n15);
|
| - n16->ReplaceInput(1, n7);
|
| - n17->ReplaceInput(0, n16);
|
| - n7->ReplaceInput(1, n17);
|
| - n10->ReplaceInput(2, n7);
|
| - n19->ReplaceInput(0, n2);
|
| - op = common()->Phi(kMachAnyTagged, 2);
|
| - Node* n11 = graph()->NewNode(op, nil, nil, nil);
|
| + 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();
|
| + 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()->Parameter(0);
|
| - Node* n4 = graph()->NewNode(op, n0);
|
| - USE(n4);
|
| - n11->ReplaceInput(0, n4);
|
| - n11->ReplaceInput(1, n11);
|
| - n11->ReplaceInput(2, n7);
|
| - n19->ReplaceInput(1, n3);
|
| - n20->ReplaceInput(1, n19);
|
| - n20->ReplaceInput(2, n6);
|
| - n20->ReplaceInput(3, n19);
|
| - n20->ReplaceInput(4, n17);
|
| - n9->ReplaceInput(1, n20);
|
| - n9->ReplaceInput(2, n7);
|
| - n21->ReplaceInput(0, n9);
|
| - n21->ReplaceInput(1, n15);
|
| - op = common()->IfFalse();
|
| + 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);
|
| - n18->ReplaceInput(0, n16);
|
| - n21->ReplaceInput(2, n18);
|
| - n22->ReplaceInput(0, n21);
|
| + 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(n22);
|
| + graph()->SetEnd(n34);
|
|
|
| - ComputeAndVerifySchedule(19);
|
| + ComputeAndVerifySchedule(30);
|
| }
|
|
|
|
|
|
|