Index: test/unittests/compiler/instruction-selector-unittest.cc |
diff --git a/test/unittests/compiler/instruction-selector-unittest.cc b/test/unittests/compiler/instruction-selector-unittest.cc |
index dfdb4c2b1f85bebc47afe1bf934523b20f4f5464..857d92fa2d9a766b6bac58f233a82f31b84638b7 100644 |
--- a/test/unittests/compiler/instruction-selector-unittest.cc |
+++ b/test/unittests/compiler/instruction-selector-unittest.cc |
@@ -362,10 +362,11 @@ TARGET_TEST_F(InstructionSelectorTest, CallJSFunctionWithDeopt) { |
Node* stack = m.NewNode(m.common()->TypedStateValues(&empty_types)); |
Node* context_dummy = m.Int32Constant(0); |
- Node* state_node = m.NewNode( |
- m.common()->FrameState(JS_FRAME, bailout_id, |
- OutputFrameStateCombine::Push()), |
- parameters, locals, stack, context_dummy, m.UndefinedConstant()); |
+ Node* state_node = |
+ m.NewNode(m.common()->FrameState(JS_FRAME, bailout_id, |
+ OutputFrameStateCombine::Push()), |
+ parameters, locals, stack, context_dummy, function_node, |
+ m.UndefinedConstant()); |
Node* call = m.CallJS0(function_node, receiver, context, state_node); |
m.Return(call); |
@@ -410,10 +411,11 @@ TARGET_TEST_F(InstructionSelectorTest, CallFunctionStubWithDeopt) { |
m.UndefinedConstant()); |
Node* context_sentinel = m.Int32Constant(0); |
- Node* frame_state_before = m.NewNode( |
- m.common()->FrameState(JS_FRAME, bailout_id_before, |
- OutputFrameStateCombine::Push()), |
- parameters, locals, stack, context_sentinel, m.UndefinedConstant()); |
+ Node* frame_state_before = |
+ m.NewNode(m.common()->FrameState(JS_FRAME, bailout_id_before, |
+ OutputFrameStateCombine::Push()), |
+ parameters, locals, stack, context_sentinel, function_node, |
+ m.UndefinedConstant()); |
// Build the call. |
Node* call = m.CallFunctionStub0(function_node, receiver, context, |
@@ -437,7 +439,7 @@ TARGET_TEST_F(InstructionSelectorTest, CallFunctionStubWithDeopt) { |
size_t num_operands = |
1 + // Code object. |
1 + |
- 4 + // Frame state deopt id + one input for each value in frame state. |
+ 5 + // Frame state deopt id + one input for each value in frame state. |
1 + // Function. |
1; // Context. |
ASSERT_EQ(num_operands, call_instr->InputCount()); |
@@ -455,21 +457,23 @@ TARGET_TEST_F(InstructionSelectorTest, CallFunctionStubWithDeopt) { |
EXPECT_EQ(1u, desc_before->parameters_count()); |
EXPECT_EQ(1u, desc_before->locals_count()); |
EXPECT_EQ(1u, desc_before->stack_count()); |
- EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(2))); |
- EXPECT_EQ(0, s.ToInt32(call_instr->InputAt(3))); // This should be a context. |
+ EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(3))); |
+ EXPECT_EQ(0, s.ToInt32(call_instr->InputAt(4))); // This should be a context. |
// We inserted 0 here. |
- EXPECT_EQ(0.5, s.ToFloat64(call_instr->InputAt(4))); |
- EXPECT_TRUE(s.ToHeapObject(call_instr->InputAt(5))->IsUndefined()); |
- EXPECT_EQ(kMachInt32, desc_before->GetType(0)); |
- EXPECT_EQ(kMachAnyTagged, desc_before->GetType(1)); // context is always |
+ EXPECT_EQ(0.5, s.ToFloat64(call_instr->InputAt(5))); |
+ EXPECT_TRUE(s.ToHeapObject(call_instr->InputAt(6))->IsUndefined()); |
+ EXPECT_EQ(kMachAnyTagged, desc_before->GetType(0)); // function is always |
+ // tagged/any. |
+ EXPECT_EQ(kMachInt32, desc_before->GetType(1)); |
+ EXPECT_EQ(kMachAnyTagged, desc_before->GetType(2)); // context is always |
// tagged/any. |
- EXPECT_EQ(kMachFloat64, desc_before->GetType(2)); |
- EXPECT_EQ(kMachAnyTagged, desc_before->GetType(3)); |
+ EXPECT_EQ(kMachFloat64, desc_before->GetType(3)); |
+ EXPECT_EQ(kMachAnyTagged, desc_before->GetType(4)); |
// Function. |
- EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(6))); |
+ EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(7))); |
// Context. |
- EXPECT_EQ(s.ToVreg(context), s.ToVreg(call_instr->InputAt(7))); |
+ EXPECT_EQ(s.ToVreg(context), s.ToVreg(call_instr->InputAt(8))); |
EXPECT_EQ(kArchRet, s[index++]->arch_opcode()); |
@@ -501,10 +505,10 @@ TARGET_TEST_F(InstructionSelectorTest, |
m.NewNode(m.common()->TypedStateValues(&int32_type), m.Int32Constant(64)); |
Node* stack = |
m.NewNode(m.common()->TypedStateValues(&int32_type), m.Int32Constant(65)); |
- Node* frame_state_parent = |
- m.NewNode(m.common()->FrameState(JS_FRAME, bailout_id_parent, |
- OutputFrameStateCombine::Ignore()), |
- parameters, locals, stack, context, m.UndefinedConstant()); |
+ Node* frame_state_parent = m.NewNode( |
+ m.common()->FrameState(JS_FRAME, bailout_id_parent, |
+ OutputFrameStateCombine::Ignore()), |
+ parameters, locals, stack, context, function_node, m.UndefinedConstant()); |
Node* context2 = m.Int32Constant(46); |
Node* parameters2 = |
@@ -516,7 +520,8 @@ TARGET_TEST_F(InstructionSelectorTest, |
Node* frame_state_before = |
m.NewNode(m.common()->FrameState(JS_FRAME, bailout_id_before, |
OutputFrameStateCombine::Push()), |
- parameters2, locals2, stack2, context2, frame_state_parent); |
+ parameters2, locals2, stack2, context2, function_node, |
+ frame_state_parent); |
// Build the call. |
Node* call = m.CallFunctionStub0(function_node, receiver, context2, |
@@ -540,8 +545,8 @@ TARGET_TEST_F(InstructionSelectorTest, |
size_t num_operands = |
1 + // Code object. |
1 + // Frame state deopt id |
- 5 + // One input for each value in frame state + context. |
- 4 + // One input for each value in the parent frame state + context. |
+ 6 + // One input for each value in frame state + context. |
+ 5 + // One input for each value in the parent frame state + context. |
1 + // Function. |
1; // Context. |
EXPECT_EQ(num_operands, call_instr->InputCount()); |
@@ -558,34 +563,36 @@ TARGET_TEST_F(InstructionSelectorTest, |
EXPECT_EQ(1u, desc_before_outer->locals_count()); |
EXPECT_EQ(1u, desc_before_outer->stack_count()); |
// Values from parent environment. |
- EXPECT_EQ(63, s.ToInt32(call_instr->InputAt(2))); |
- EXPECT_EQ(kMachInt32, desc_before_outer->GetType(0)); |
+ EXPECT_EQ(kMachAnyTagged, desc_before->GetType(0)); |
+ EXPECT_EQ(63, s.ToInt32(call_instr->InputAt(3))); |
+ EXPECT_EQ(kMachInt32, desc_before_outer->GetType(1)); |
// Context: |
- EXPECT_EQ(66, s.ToInt32(call_instr->InputAt(3))); |
- EXPECT_EQ(kMachAnyTagged, desc_before_outer->GetType(1)); |
- EXPECT_EQ(64, s.ToInt32(call_instr->InputAt(4))); |
- EXPECT_EQ(kMachInt32, desc_before_outer->GetType(2)); |
- EXPECT_EQ(65, s.ToInt32(call_instr->InputAt(5))); |
+ EXPECT_EQ(66, s.ToInt32(call_instr->InputAt(4))); |
+ EXPECT_EQ(kMachAnyTagged, desc_before_outer->GetType(2)); |
+ EXPECT_EQ(64, s.ToInt32(call_instr->InputAt(5))); |
EXPECT_EQ(kMachInt32, desc_before_outer->GetType(3)); |
+ EXPECT_EQ(65, s.ToInt32(call_instr->InputAt(6))); |
+ EXPECT_EQ(kMachInt32, desc_before_outer->GetType(4)); |
// Values from the nested frame. |
EXPECT_EQ(1u, desc_before->parameters_count()); |
EXPECT_EQ(1u, desc_before->locals_count()); |
EXPECT_EQ(2u, desc_before->stack_count()); |
- EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(6))); |
- EXPECT_EQ(kMachInt32, desc_before->GetType(0)); |
- EXPECT_EQ(46, s.ToInt32(call_instr->InputAt(7))); |
- EXPECT_EQ(kMachAnyTagged, desc_before->GetType(1)); |
- EXPECT_EQ(0.25, s.ToFloat64(call_instr->InputAt(8))); |
- EXPECT_EQ(kMachFloat64, desc_before->GetType(2)); |
- EXPECT_EQ(44, s.ToInt32(call_instr->InputAt(9))); |
- EXPECT_EQ(kMachInt32, desc_before->GetType(3)); |
- EXPECT_EQ(45, s.ToInt32(call_instr->InputAt(10))); |
+ EXPECT_EQ(kMachAnyTagged, desc_before->GetType(0)); |
+ EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(8))); |
+ EXPECT_EQ(kMachInt32, desc_before->GetType(1)); |
+ EXPECT_EQ(46, s.ToInt32(call_instr->InputAt(9))); |
+ EXPECT_EQ(kMachAnyTagged, desc_before->GetType(2)); |
+ EXPECT_EQ(0.25, s.ToFloat64(call_instr->InputAt(10))); |
+ EXPECT_EQ(kMachFloat64, desc_before->GetType(3)); |
+ EXPECT_EQ(44, s.ToInt32(call_instr->InputAt(11))); |
EXPECT_EQ(kMachInt32, desc_before->GetType(4)); |
+ EXPECT_EQ(45, s.ToInt32(call_instr->InputAt(12))); |
+ EXPECT_EQ(kMachInt32, desc_before->GetType(5)); |
// Function. |
- EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(11))); |
+ EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(13))); |
// Context. |
- EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(12))); |
+ EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(14))); |
// Continuation. |
EXPECT_EQ(kArchRet, s[index++]->arch_opcode()); |