Index: src/compiler/js-create-lowering.cc |
diff --git a/src/compiler/js-create-lowering.cc b/src/compiler/js-create-lowering.cc |
index 7e589ea5899198490898081078ff6b1045123ff9..895293469c3489c1f6092e5a0c908f5f93822d6c 100644 |
--- a/src/compiler/js-create-lowering.cc |
+++ b/src/compiler/js-create-lowering.cc |
@@ -280,6 +280,7 @@ Reduction JSCreateLowering::ReduceJSCreateArguments(Node* node) { |
CreateArgumentsType type = CreateArgumentsTypeOf(node->op()); |
Node* const frame_state = NodeProperties::GetFrameStateInput(node, 0); |
Node* const outer_state = frame_state->InputAt(kFrameStateOuterStateInput); |
+ Node* const control = graph()->start(); |
FrameStateInfo state_info = OpParameter<FrameStateInfo>(frame_state); |
// Use the ArgumentsAccessStub for materializing both mapped and unmapped |
@@ -293,38 +294,41 @@ Reduction JSCreateLowering::ReduceJSCreateArguments(Node* node) { |
shared_info->has_duplicate_parameters()) { |
return NoChange(); |
} |
- // TODO(bmeurer): Actually we don't need a frame state here. |
Callable callable = CodeFactory::FastNewSloppyArguments(isolate()); |
+ Operator::Properties properties = node->op()->properties(); |
CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
isolate(), graph()->zone(), callable.descriptor(), 0, |
- CallDescriptor::kNeedsFrameState); |
+ CallDescriptor::kNoFlags, properties); |
const Operator* new_op = common()->Call(desc); |
Node* stub_code = jsgraph()->HeapConstant(callable.code()); |
node->InsertInput(graph()->zone(), 0, stub_code); |
+ node->RemoveInput(3); // Remove the frame state. |
NodeProperties::ChangeOp(node, new_op); |
return Changed(node); |
} |
case CreateArgumentsType::kUnmappedArguments: { |
- // TODO(bmeurer): Actually we don't need a frame state here. |
Callable callable = CodeFactory::FastNewStrictArguments(isolate()); |
+ Operator::Properties properties = node->op()->properties(); |
CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
isolate(), graph()->zone(), callable.descriptor(), 0, |
- CallDescriptor::kNeedsFrameState); |
+ CallDescriptor::kNoFlags, properties); |
const Operator* new_op = common()->Call(desc); |
Node* stub_code = jsgraph()->HeapConstant(callable.code()); |
node->InsertInput(graph()->zone(), 0, stub_code); |
+ node->RemoveInput(3); // Remove the frame state. |
NodeProperties::ChangeOp(node, new_op); |
return Changed(node); |
} |
case CreateArgumentsType::kRestParameter: { |
- // TODO(bmeurer): Actually we don't need a frame state here. |
Callable callable = CodeFactory::FastNewRestParameter(isolate()); |
+ Operator::Properties properties = node->op()->properties(); |
CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
isolate(), graph()->zone(), callable.descriptor(), 0, |
- CallDescriptor::kNeedsFrameState); |
+ CallDescriptor::kNoFlags, properties); |
const Operator* new_op = common()->Call(desc); |
Node* stub_code = jsgraph()->HeapConstant(callable.code()); |
node->InsertInput(graph()->zone(), 0, stub_code); |
+ node->RemoveInput(3); // Remove the frame state. |
NodeProperties::ChangeOp(node, new_op); |
return Changed(node); |
} |
@@ -337,7 +341,6 @@ Reduction JSCreateLowering::ReduceJSCreateArguments(Node* node) { |
Handle<SharedFunctionInfo> shared; |
if (!state_info.shared_info().ToHandle(&shared)) return NoChange(); |
Node* const callee = NodeProperties::GetValueInput(node, 0); |
- Node* const control = NodeProperties::GetControlInput(node); |
Node* const context = NodeProperties::GetContextInput(node); |
Node* effect = NodeProperties::GetEffectInput(node); |
// TODO(mstarzinger): Duplicate parameters are not handled yet. |
@@ -378,7 +381,6 @@ Reduction JSCreateLowering::ReduceJSCreateArguments(Node* node) { |
} else if (type == CreateArgumentsType::kUnmappedArguments) { |
// Use inline allocation for all unmapped arguments objects within inlined |
// (i.e. non-outermost) frames, independent of the object size. |
- Node* const control = NodeProperties::GetControlInput(node); |
Node* const context = NodeProperties::GetContextInput(node); |
Node* effect = NodeProperties::GetEffectInput(node); |
// Choose the correct frame state and frame state info depending on |
@@ -416,7 +418,6 @@ Reduction JSCreateLowering::ReduceJSCreateArguments(Node* node) { |
int start_index = shared->internal_formal_parameter_count(); |
// Use inline allocation for all unmapped arguments objects within inlined |
// (i.e. non-outermost) frames, independent of the object size. |
- Node* const control = NodeProperties::GetControlInput(node); |
Node* const context = NodeProperties::GetContextInput(node); |
Node* effect = NodeProperties::GetEffectInput(node); |
// Choose the correct frame state and frame state info depending on |