Index: src/compiler/js-typed-lowering.cc |
diff --git a/src/compiler/js-typed-lowering.cc b/src/compiler/js-typed-lowering.cc |
index a4a59ce723bab50b0431219175090f90f80b8692..abbe6c36d7f245eb6184bab98321ae5410a9e9c0 100644 |
--- a/src/compiler/js-typed-lowering.cc |
+++ b/src/compiler/js-typed-lowering.cc |
@@ -1773,78 +1773,6 @@ Reduction JSTypedLowering::ReduceJSCreateArray(Node* node) { |
} |
} |
- // Reduce {node} to the appropriate ArrayConstructorStub backend. |
- // Note that these stubs "behave" like JSFunctions, which means they |
- // expect a receiver on the stack, which they remove. We just push |
- // undefined for the receiver. |
- ElementsKind elements_kind = site->GetElementsKind(); |
- AllocationSiteOverrideMode override_mode = |
- (AllocationSite::GetMode(elements_kind) == TRACK_ALLOCATION_SITE) |
- ? DISABLE_ALLOCATION_SITES |
- : DONT_OVERRIDE; |
- if (p.arity() == 0) { |
- ArrayNoArgumentConstructorStub stub(isolate(), elements_kind, |
- override_mode); |
- CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
- isolate(), graph()->zone(), stub.GetCallInterfaceDescriptor(), 1, |
- CallDescriptor::kNeedsFrameState); |
- node->ReplaceInput(0, jsgraph()->HeapConstant(stub.GetCode())); |
- node->InsertInput(graph()->zone(), 2, jsgraph()->HeapConstant(site)); |
- node->InsertInput(graph()->zone(), 3, jsgraph()->UndefinedConstant()); |
- NodeProperties::ChangeOp(node, common()->Call(desc)); |
- return Changed(node); |
- } else if (p.arity() == 1) { |
- // TODO(bmeurer): Optimize for the 0 length non-holey case? |
- ArraySingleArgumentConstructorStub stub( |
- isolate(), GetHoleyElementsKind(elements_kind), override_mode); |
- CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
- isolate(), graph()->zone(), stub.GetCallInterfaceDescriptor(), 2, |
- CallDescriptor::kNeedsFrameState); |
- node->ReplaceInput(0, jsgraph()->HeapConstant(stub.GetCode())); |
- node->InsertInput(graph()->zone(), 2, jsgraph()->HeapConstant(site)); |
- node->InsertInput(graph()->zone(), 3, jsgraph()->Int32Constant(1)); |
- node->InsertInput(graph()->zone(), 4, jsgraph()->UndefinedConstant()); |
- NodeProperties::ChangeOp(node, common()->Call(desc)); |
- return Changed(node); |
- } else { |
- int const arity = static_cast<int>(p.arity()); |
- ArrayNArgumentsConstructorStub stub(isolate(), elements_kind, |
- override_mode); |
- CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
- isolate(), graph()->zone(), stub.GetCallInterfaceDescriptor(), |
- arity + 1, CallDescriptor::kNeedsFrameState); |
- node->ReplaceInput(0, jsgraph()->HeapConstant(stub.GetCode())); |
- node->InsertInput(graph()->zone(), 2, jsgraph()->HeapConstant(site)); |
- node->InsertInput(graph()->zone(), 3, jsgraph()->Int32Constant(arity)); |
- node->InsertInput(graph()->zone(), 4, jsgraph()->UndefinedConstant()); |
- NodeProperties::ChangeOp(node, common()->Call(desc)); |
- return Changed(node); |
- } |
-} |
- |
- |
-Reduction JSTypedLowering::ReduceJSCreateClosure(Node* node) { |
- DCHECK_EQ(IrOpcode::kJSCreateClosure, node->opcode()); |
- CreateClosureParameters const& p = CreateClosureParametersOf(node->op()); |
- Handle<SharedFunctionInfo> shared = p.shared_info(); |
- |
- // Use the FastNewClosureStub that allocates in new space only for nested |
- // functions that don't need literals cloning. |
- if (p.pretenure() == NOT_TENURED && shared->num_literals() == 0) { |
- Isolate* isolate = jsgraph()->isolate(); |
- Callable callable = CodeFactory::FastNewClosure( |
- isolate, shared->language_mode(), shared->kind()); |
- CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
- isolate, graph()->zone(), callable.descriptor(), 0, |
- CallDescriptor::kNoFlags); |
- const Operator* new_op = common()->Call(desc); |
- Node* stub_code = jsgraph()->HeapConstant(callable.code()); |
- node->InsertInput(graph()->zone(), 0, stub_code); |
- node->InsertInput(graph()->zone(), 1, jsgraph()->HeapConstant(shared)); |
- NodeProperties::ChangeOp(node, new_op); |
- return Changed(node); |
- } |
- |
return NoChange(); |
} |
@@ -1880,77 +1808,6 @@ Reduction JSTypedLowering::ReduceJSCreateIterResultObject(Node* node) { |
} |
-Reduction JSTypedLowering::ReduceJSCreateLiteralArray(Node* node) { |
- DCHECK_EQ(IrOpcode::kJSCreateLiteralArray, node->opcode()); |
- CreateLiteralParameters const& p = CreateLiteralParametersOf(node->op()); |
- Handle<FixedArray> const constants = Handle<FixedArray>::cast(p.constant()); |
- int const length = constants->length(); |
- int const flags = p.flags(); |
- |
- // Use the FastCloneShallowArrayStub only for shallow boilerplates up to the |
- // initial length limit for arrays with "fast" elements kind. |
- // TODO(rossberg): Teach strong mode to FastCloneShallowArrayStub. |
- if ((flags & ArrayLiteral::kShallowElements) != 0 && |
- (flags & ArrayLiteral::kIsStrong) == 0 && |
- length < JSArray::kInitialMaxFastElementArray) { |
- Isolate* isolate = jsgraph()->isolate(); |
- Callable callable = CodeFactory::FastCloneShallowArray(isolate); |
- CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
- isolate, graph()->zone(), callable.descriptor(), 0, |
- (OperatorProperties::GetFrameStateInputCount(node->op()) != 0) |
- ? CallDescriptor::kNeedsFrameState |
- : CallDescriptor::kNoFlags); |
- const Operator* new_op = common()->Call(desc); |
- Node* stub_code = jsgraph()->HeapConstant(callable.code()); |
- Node* literal_index = jsgraph()->SmiConstant(p.index()); |
- Node* constant_elements = jsgraph()->HeapConstant(constants); |
- node->InsertInput(graph()->zone(), 0, stub_code); |
- node->InsertInput(graph()->zone(), 2, literal_index); |
- node->InsertInput(graph()->zone(), 3, constant_elements); |
- NodeProperties::ChangeOp(node, new_op); |
- return Changed(node); |
- } |
- |
- return NoChange(); |
-} |
- |
- |
-Reduction JSTypedLowering::ReduceJSCreateLiteralObject(Node* node) { |
- DCHECK_EQ(IrOpcode::kJSCreateLiteralObject, node->opcode()); |
- CreateLiteralParameters const& p = CreateLiteralParametersOf(node->op()); |
- Handle<FixedArray> const constants = Handle<FixedArray>::cast(p.constant()); |
- // Constants are pairs, see ObjectLiteral::properties_count(). |
- int const length = constants->length() / 2; |
- int const flags = p.flags(); |
- |
- // Use the FastCloneShallowObjectStub only for shallow boilerplates without |
- // elements up to the number of properties that the stubs can handle. |
- if ((flags & ObjectLiteral::kShallowProperties) != 0 && |
- length <= FastCloneShallowObjectStub::kMaximumClonedProperties) { |
- Isolate* isolate = jsgraph()->isolate(); |
- Callable callable = CodeFactory::FastCloneShallowObject(isolate, length); |
- CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
- isolate, graph()->zone(), callable.descriptor(), 0, |
- (OperatorProperties::GetFrameStateInputCount(node->op()) != 0) |
- ? CallDescriptor::kNeedsFrameState |
- : CallDescriptor::kNoFlags); |
- const Operator* new_op = common()->Call(desc); |
- Node* stub_code = jsgraph()->HeapConstant(callable.code()); |
- Node* literal_index = jsgraph()->SmiConstant(p.index()); |
- Node* literal_flags = jsgraph()->SmiConstant(flags); |
- Node* constant_elements = jsgraph()->HeapConstant(constants); |
- node->InsertInput(graph()->zone(), 0, stub_code); |
- node->InsertInput(graph()->zone(), 2, literal_index); |
- node->InsertInput(graph()->zone(), 3, constant_elements); |
- node->InsertInput(graph()->zone(), 4, literal_flags); |
- NodeProperties::ChangeOp(node, new_op); |
- return Changed(node); |
- } |
- |
- return NoChange(); |
-} |
- |
- |
Reduction JSTypedLowering::ReduceJSCreateFunctionContext(Node* node) { |
DCHECK_EQ(IrOpcode::kJSCreateFunctionContext, node->opcode()); |
int slot_count = OpParameter<int>(node->op()); |
@@ -1983,20 +1840,6 @@ Reduction JSTypedLowering::ReduceJSCreateFunctionContext(Node* node) { |
return Changed(node); |
} |
- // Use the FastNewContextStub only for function contexts up maximum size. |
- if (slot_count <= FastNewContextStub::kMaximumSlots) { |
- Isolate* isolate = jsgraph()->isolate(); |
- Callable callable = CodeFactory::FastNewContext(isolate, slot_count); |
- CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
- isolate, graph()->zone(), callable.descriptor(), 0, |
- CallDescriptor::kNoFlags); |
- const Operator* new_op = common()->Call(desc); |
- Node* stub_code = jsgraph()->HeapConstant(callable.code()); |
- node->InsertInput(graph()->zone(), 0, stub_code); |
- NodeProperties::ChangeOp(node, new_op); |
- return Changed(node); |
- } |
- |
return NoChange(); |
} |
@@ -2477,14 +2320,8 @@ Reduction JSTypedLowering::Reduce(Node* node) { |
return ReduceJSCreateArguments(node); |
case IrOpcode::kJSCreateArray: |
return ReduceJSCreateArray(node); |
- case IrOpcode::kJSCreateClosure: |
- return ReduceJSCreateClosure(node); |
case IrOpcode::kJSCreateIterResultObject: |
return ReduceJSCreateIterResultObject(node); |
- case IrOpcode::kJSCreateLiteralArray: |
- return ReduceJSCreateLiteralArray(node); |
- case IrOpcode::kJSCreateLiteralObject: |
- return ReduceJSCreateLiteralObject(node); |
case IrOpcode::kJSCreateFunctionContext: |
return ReduceJSCreateFunctionContext(node); |
case IrOpcode::kJSCreateWithContext: |