summaryrefslogtreecommitdiff
path: root/deps/v8/test/unittests/compiler/linkage-tail-call-unittest.cc
diff options
context:
space:
mode:
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.cc89
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