Index: src/code-stubs-hydrogen.cc |
diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc |
index 4ecd6369e1153633403c80cfa4b3ed10ceadf97e..36242405b14c0fa5afd1174cb5a54b1d3aae7fc8 100644 |
--- a/src/code-stubs-hydrogen.cc |
+++ b/src/code-stubs-hydrogen.cc |
@@ -85,18 +85,10 @@ class CodeStubGraphBuilderBase : public HGraphBuilder { |
HValue* EmitKeyedSloppyArguments(HValue* receiver, HValue* key, |
HValue* value); |
- HValue* BuildArrayConstructor(ElementsKind kind, |
- AllocationSiteOverrideMode override_mode); |
- HValue* BuildInternalArrayConstructor(ElementsKind kind); |
- |
HValue* BuildToString(HValue* input, bool convert); |
HValue* BuildToPrimitive(HValue* input, HValue* input_map); |
private: |
- HValue* BuildArraySingleArgumentConstructor(JSArrayBuilder* builder); |
- HValue* BuildArrayNArgumentsConstructor(JSArrayBuilder* builder, |
- ElementsKind kind); |
- |
base::SmartArrayPointer<HParameter*> parameters_; |
HValue* arguments_length_; |
CompilationInfo* info_; |
@@ -1456,108 +1448,6 @@ Handle<Code> TransitionElementsKindStub::GenerateCode() { |
return DoGenerateCode(this); |
} |
-HValue* CodeStubGraphBuilderBase::BuildArrayConstructor( |
- ElementsKind kind, AllocationSiteOverrideMode override_mode) { |
- HValue* constructor = GetParameter(ArrayConstructorStubBase::kConstructor); |
- HValue* alloc_site = GetParameter(ArrayConstructorStubBase::kAllocationSite); |
- JSArrayBuilder array_builder(this, kind, alloc_site, constructor, |
- override_mode); |
- return BuildArrayNArgumentsConstructor(&array_builder, kind); |
-} |
- |
-HValue* CodeStubGraphBuilderBase::BuildInternalArrayConstructor( |
- ElementsKind kind) { |
- HValue* constructor = GetParameter( |
- InternalArrayConstructorStubBase::kConstructor); |
- JSArrayBuilder array_builder(this, kind, constructor); |
- return BuildArrayNArgumentsConstructor(&array_builder, kind); |
-} |
- |
- |
-HValue* CodeStubGraphBuilderBase::BuildArraySingleArgumentConstructor( |
- JSArrayBuilder* array_builder) { |
- // Smi check and range check on the input arg. |
- HValue* constant_one = graph()->GetConstant1(); |
- HValue* constant_zero = graph()->GetConstant0(); |
- |
- HInstruction* elements = Add<HArgumentsElements>(false); |
- HInstruction* argument = Add<HAccessArgumentsAt>( |
- elements, constant_one, constant_zero); |
- |
- return BuildAllocateArrayFromLength(array_builder, argument); |
-} |
- |
- |
-HValue* CodeStubGraphBuilderBase::BuildArrayNArgumentsConstructor( |
- JSArrayBuilder* array_builder, ElementsKind kind) { |
- // Insert a bounds check because the number of arguments might exceed |
- // the kInitialMaxFastElementArray limit. This cannot happen for code |
- // that was parsed, but calling via Array.apply(thisArg, [...]) might |
- // trigger it. |
- HValue* length = GetArgumentsLength(); |
- HConstant* max_alloc_length = |
- Add<HConstant>(JSArray::kInitialMaxFastElementArray); |
- HValue* checked_length = Add<HBoundsCheck>(length, max_alloc_length); |
- |
- // We need to fill with the hole if it's a smi array in the multi-argument |
- // case because we might have to bail out while copying arguments into |
- // the array because they aren't compatible with a smi array. |
- // If it's a double array, no problem, and if it's fast then no |
- // problem either because doubles are boxed. |
- // |
- // TODO(mvstanton): consider an instruction to memset fill the array |
- // with zero in this case instead. |
- JSArrayBuilder::FillMode fill_mode = IsFastSmiElementsKind(kind) |
- ? JSArrayBuilder::FILL_WITH_HOLE |
- : JSArrayBuilder::DONT_FILL_WITH_HOLE; |
- HValue* new_object = array_builder->AllocateArray(checked_length, |
- checked_length, |
- fill_mode); |
- HValue* elements = array_builder->GetElementsLocation(); |
- DCHECK(elements != NULL); |
- |
- // Now populate the elements correctly. |
- LoopBuilder builder(this, |
- context(), |
- LoopBuilder::kPostIncrement); |
- HValue* start = graph()->GetConstant0(); |
- HValue* key = builder.BeginBody(start, checked_length, Token::LT); |
- HInstruction* argument_elements = Add<HArgumentsElements>(false); |
- HInstruction* argument = Add<HAccessArgumentsAt>( |
- argument_elements, checked_length, key); |
- |
- Add<HStoreKeyed>(elements, key, argument, nullptr, kind); |
- builder.EndBody(); |
- return new_object; |
-} |
- |
- |
-template <> |
-HValue* CodeStubGraphBuilder<ArrayNArgumentsConstructorStub>::BuildCodeStub() { |
- ElementsKind kind = casted_stub()->elements_kind(); |
- AllocationSiteOverrideMode override_mode = casted_stub()->override_mode(); |
- return BuildArrayConstructor(kind, override_mode); |
-} |
- |
- |
-Handle<Code> ArrayNArgumentsConstructorStub::GenerateCode() { |
- return DoGenerateCode(this); |
-} |
- |
- |
-template <> |
-HValue* CodeStubGraphBuilder<InternalArrayNArgumentsConstructorStub>:: |
- BuildCodeStub() { |
- ElementsKind kind = casted_stub()->elements_kind(); |
- return BuildInternalArrayConstructor(kind); |
-} |
- |
- |
-Handle<Code> InternalArrayNArgumentsConstructorStub::GenerateCode() { |
- return DoGenerateCode(this); |
-} |
- |
- |
template <> |
HValue* CodeStubGraphBuilder<BinaryOpICStub>::BuildCodeInitializedStub() { |
BinaryOpICState state = casted_stub()->state(); |