diff options
Diffstat (limited to 'deps/v8/test/unittests/compiler/linkage-tail-call-unittest.cc')
-rw-r--r-- | deps/v8/test/unittests/compiler/linkage-tail-call-unittest.cc | 89 |
1 files changed, 43 insertions, 46 deletions
diff --git a/deps/v8/test/unittests/compiler/linkage-tail-call-unittest.cc b/deps/v8/test/unittests/compiler/linkage-tail-call-unittest.cc index 597edde665..741021a446 100644 --- a/deps/v8/test/unittests/compiler/linkage-tail-call-unittest.cc +++ b/deps/v8/test/unittests/compiler/linkage-tail-call-unittest.cc @@ -26,27 +26,25 @@ class LinkageTailCall : public TestWithZone { CallDescriptor* NewStandardCallDescriptor(LocationSignature* locations) { DCHECK(arraysize(kMachineTypes) >= locations->return_count() + locations->parameter_count()); - MachineSignature* types = new (zone()) MachineSignature( - locations->return_count(), locations->parameter_count(), kMachineTypes); - return new (zone()) CallDescriptor(CallDescriptor::kCallCodeObject, - MachineType::AnyTagged(), - LinkageLocation::ForAnyRegister(), - types, // machine_sig - locations, // location_sig - 0, // js_parameter_count - Operator::kNoProperties, // properties - 0, // callee-saved - 0, // callee-saved fp - CallDescriptor::kNoFlags, // flags, - ""); + USE(kMachineTypes); + return new (zone()) CallDescriptor( + CallDescriptor::kCallCodeObject, MachineType::AnyTagged(), + LinkageLocation::ForAnyRegister(MachineType::Pointer()), + locations, // location_sig + 0, // js_parameter_count + Operator::kNoProperties, // properties + 0, // callee-saved + 0, // callee-saved fp + CallDescriptor::kNoFlags, // flags, + ""); } LinkageLocation StackLocation(int loc) { - return LinkageLocation::ForCallerFrameSlot(-loc); + return LinkageLocation::ForCallerFrameSlot(-loc, MachineType::Pointer()); } LinkageLocation RegisterLocation(int loc) { - return LinkageLocation::ForRegister(loc); + return LinkageLocation::ForRegister(loc, MachineType::Pointer()); } }; @@ -57,8 +55,9 @@ TEST_F(LinkageTailCall, EmptyToEmpty) { CommonOperatorBuilder common(zone()); const Operator* op = common.Call(desc); Node* const node = Node::New(zone(), 1, op, 0, nullptr, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc->CanTailCall(node, &stack_param_delta)); + EXPECT_TRUE(desc->CanTailCall(node)); + const CallDescriptor* callee = CallDescriptorOf(node->op()); + int stack_param_delta = callee->GetStackParameterDelta(desc); EXPECT_EQ(0, stack_param_delta); } @@ -75,8 +74,8 @@ TEST_F(LinkageTailCall, SameReturn) { CommonOperatorBuilder common(zone()); const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, 0, nullptr, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); EXPECT_EQ(0, stack_param_delta); } @@ -95,9 +94,7 @@ TEST_F(LinkageTailCall, DifferingReturn) { CommonOperatorBuilder common(zone()); const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, 0, nullptr, false); - int stack_param_delta = 0; - EXPECT_FALSE(desc1->CanTailCall(node, &stack_param_delta)); - EXPECT_EQ(0, stack_param_delta); + EXPECT_TRUE(!desc1->CanTailCall(node)); } @@ -116,8 +113,8 @@ TEST_F(LinkageTailCall, MoreRegisterParametersCallee) { CommonOperatorBuilder common(zone()); const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, 0, nullptr, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); EXPECT_EQ(0, stack_param_delta); } @@ -137,8 +134,8 @@ TEST_F(LinkageTailCall, MoreRegisterParametersCaller) { CommonOperatorBuilder common(zone()); const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, 0, nullptr, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); EXPECT_EQ(0, stack_param_delta); } @@ -158,9 +155,9 @@ TEST_F(LinkageTailCall, MoreRegisterAndStackParametersCallee) { CommonOperatorBuilder common(zone()); const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, 0, nullptr, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); - EXPECT_EQ(-1, stack_param_delta); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); + EXPECT_EQ(1, stack_param_delta); } @@ -179,9 +176,9 @@ TEST_F(LinkageTailCall, MoreRegisterAndStackParametersCaller) { CommonOperatorBuilder common(zone()); const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, 0, nullptr, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); - EXPECT_EQ(1, stack_param_delta); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); + EXPECT_EQ(-1, stack_param_delta); } @@ -205,8 +202,8 @@ TEST_F(LinkageTailCall, MatchingStackParameters) { const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, arraysize(parameters), parameters, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); EXPECT_EQ(0, stack_param_delta); } @@ -231,8 +228,8 @@ TEST_F(LinkageTailCall, NonMatchingStackParameters) { const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, arraysize(parameters), parameters, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); EXPECT_EQ(0, stack_param_delta); } @@ -258,8 +255,8 @@ TEST_F(LinkageTailCall, MatchingStackParametersExtraCallerRegisters) { const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, arraysize(parameters), parameters, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); EXPECT_EQ(0, stack_param_delta); } @@ -286,8 +283,8 @@ TEST_F(LinkageTailCall, MatchingStackParametersExtraCalleeRegisters) { const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, arraysize(parameters), parameters, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); EXPECT_EQ(0, stack_param_delta); } @@ -314,9 +311,9 @@ TEST_F(LinkageTailCall, MatchingStackParametersExtraCallerRegistersAndStack) { const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, arraysize(parameters), parameters, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); - EXPECT_EQ(1, stack_param_delta); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); + EXPECT_EQ(-1, stack_param_delta); } @@ -342,9 +339,9 @@ TEST_F(LinkageTailCall, MatchingStackParametersExtraCalleeRegistersAndStack) { const Operator* op = common.Call(desc2); Node* const node = Node::New(zone(), 1, op, arraysize(parameters), parameters, false); - int stack_param_delta = 0; - EXPECT_TRUE(desc1->CanTailCall(node, &stack_param_delta)); - EXPECT_EQ(-1, stack_param_delta); + EXPECT_TRUE(desc1->CanTailCall(node)); + int stack_param_delta = desc2->GetStackParameterDelta(desc1); + EXPECT_EQ(1, stack_param_delta); } } // namespace compiler |