Index: src/compiler/instruction-selector-unittest.cc |
diff --git a/src/compiler/instruction-selector-unittest.cc b/src/compiler/instruction-selector-unittest.cc |
index 3ce5f3a80493a8e119e1b7c7769b64d6383cfe5f..ad47ba6c220d6f9b798188fd626d6eb12140fddb 100644 |
--- a/src/compiler/instruction-selector-unittest.cc |
+++ b/src/compiler/instruction-selector-unittest.cc |
@@ -330,9 +330,8 @@ TARGET_TEST_F(InstructionSelectorTest, CallJSFunctionWithDeopt) { |
Node* stack = m.NewNode(m.common()->StateValues(0)); |
Node* context_dummy = m.Int32Constant(0); |
- Node* state_node = |
- m.NewNode(m.common()->FrameState(bailout_id, kPushOutput), parameters, |
- locals, stack, context_dummy, m.UndefinedConstant()); |
+ Node* state_node = m.NewNode(m.common()->FrameState(bailout_id, kPushOutput), |
+ parameters, locals, stack, context_dummy); |
Node* call = m.CallJS0(function_node, receiver, state_node); |
m.Return(call); |
@@ -368,11 +367,10 @@ TARGET_TEST_F(InstructionSelectorTest, CallFunctionStubWithDeopt) { |
Node* parameters = m.NewNode(m.common()->StateValues(1), m.Int32Constant(43)); |
Node* locals = m.NewNode(m.common()->StateValues(1), m.Int32Constant(44)); |
Node* stack = m.NewNode(m.common()->StateValues(1), m.Int32Constant(45)); |
- |
Node* context_sentinel = m.Int32Constant(0); |
- Node* frame_state_before = m.NewNode( |
- m.common()->FrameState(bailout_id_before, kPushOutput), parameters, |
- locals, stack, context_sentinel, m.UndefinedConstant()); |
+ Node* frame_state_before = |
+ m.NewNode(m.common()->FrameState(bailout_id_before, kPushOutput), |
+ parameters, locals, stack, context_sentinel); |
// Build the call. |
Node* call = m.CallFunctionStub0(function_node, receiver, context, |
@@ -428,96 +426,6 @@ TARGET_TEST_F(InstructionSelectorTest, CallFunctionStubWithDeopt) { |
EXPECT_EQ(index, s.size()); |
} |
- |
-TARGET_TEST_F(InstructionSelectorTest, |
- CallFunctionStubDeoptRecursiveFrameState) { |
- StreamBuilder m(this, kMachAnyTagged, kMachAnyTagged, kMachAnyTagged, |
- kMachAnyTagged); |
- |
- BailoutId bailout_id_before(42); |
- BailoutId bailout_id_parent(62); |
- |
- // Some arguments for the call node. |
- Node* function_node = m.Parameter(0); |
- Node* receiver = m.Parameter(1); |
- Node* context = m.Int32Constant(66); |
- |
- // Build frame state for the state before the call. |
- Node* parameters = m.NewNode(m.common()->StateValues(1), m.Int32Constant(63)); |
- Node* locals = m.NewNode(m.common()->StateValues(1), m.Int32Constant(64)); |
- Node* stack = m.NewNode(m.common()->StateValues(1), m.Int32Constant(65)); |
- Node* frame_state_parent = |
- m.NewNode(m.common()->FrameState(bailout_id_parent, kIgnoreOutput), |
- parameters, locals, stack, context, m.UndefinedConstant()); |
- |
- Node* context2 = m.Int32Constant(46); |
- Node* parameters2 = |
- m.NewNode(m.common()->StateValues(1), m.Int32Constant(43)); |
- Node* locals2 = m.NewNode(m.common()->StateValues(1), m.Int32Constant(44)); |
- Node* stack2 = m.NewNode(m.common()->StateValues(1), m.Int32Constant(45)); |
- Node* frame_state_before = |
- m.NewNode(m.common()->FrameState(bailout_id_before, kPushOutput), |
- parameters2, locals2, stack2, context2, frame_state_parent); |
- |
- // Build the call. |
- Node* call = m.CallFunctionStub0(function_node, receiver, context2, |
- frame_state_before, CALL_AS_METHOD); |
- |
- m.Return(call); |
- |
- Stream s = m.Build(kAllExceptNopInstructions); |
- |
- // Skip until kArchCallJSFunction. |
- size_t index = 0; |
- for (; index < s.size() && s[index]->arch_opcode() != kArchCallCodeObject; |
- index++) { |
- } |
- // Now we should have three instructions: call, return. |
- EXPECT_EQ(index + 2, s.size()); |
- |
- // Check the call instruction |
- const Instruction* call_instr = s[index++]; |
- EXPECT_EQ(kArchCallCodeObject, call_instr->arch_opcode()); |
- size_t num_operands = |
- 1 + // Code object. |
- 1 + // Frame state deopt id |
- 4 + // One input for each value in frame state + context. |
- 4 + // One input for each value in the parent frame state + context. |
- 1 + // Function. |
- 1; // Context. |
- EXPECT_EQ(num_operands, call_instr->InputCount()); |
- // Code object. |
- EXPECT_TRUE(call_instr->InputAt(0)->IsImmediate()); |
- |
- // Deoptimization id. |
- int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(1)); |
- FrameStateDescriptor* desc_before = |
- s.GetFrameStateDescriptor(deopt_id_before); |
- EXPECT_EQ(bailout_id_before, desc_before->bailout_id()); |
- EXPECT_EQ(1, desc_before->parameters_count()); |
- EXPECT_EQ(1, desc_before->locals_count()); |
- EXPECT_EQ(1, desc_before->stack_count()); |
- EXPECT_EQ(63, s.ToInt32(call_instr->InputAt(2))); |
- // Context: |
- EXPECT_EQ(66, s.ToInt32(call_instr->InputAt(3))); |
- EXPECT_EQ(64, s.ToInt32(call_instr->InputAt(4))); |
- EXPECT_EQ(65, s.ToInt32(call_instr->InputAt(5))); |
- // Values from parent environment should follow. |
- EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(6))); |
- EXPECT_EQ(46, s.ToInt32(call_instr->InputAt(7))); |
- EXPECT_EQ(44, s.ToInt32(call_instr->InputAt(8))); |
- EXPECT_EQ(45, s.ToInt32(call_instr->InputAt(9))); |
- |
- // Function. |
- EXPECT_EQ(function_node->id(), s.ToVreg(call_instr->InputAt(10))); |
- // Context. |
- EXPECT_EQ(context2->id(), s.ToVreg(call_instr->InputAt(11))); |
- // Continuation. |
- |
- EXPECT_EQ(kArchRet, s[index++]->arch_opcode()); |
- EXPECT_EQ(index, s.size()); |
-} |
- |
} // namespace compiler |
} // namespace internal |
} // namespace v8 |