| Index: src/code-stubs-hydrogen.cc
|
| diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc
|
| index 43cf265e97f94af41800587d3ac5831674df74f1..9f9b14e309d975f15c77020d72a6e38b8e3e0a28 100644
|
| --- a/src/code-stubs-hydrogen.cc
|
| +++ b/src/code-stubs-hydrogen.cc
|
| @@ -112,8 +112,6 @@
|
| void BuildInstallFromOptimizedCodeMap(HValue* js_function,
|
| HValue* shared_info,
|
| HValue* native_context);
|
| -
|
| - HValue* CheckString(HValue* input, bool convert);
|
|
|
| private:
|
| HValue* BuildArraySingleArgumentConstructor(JSArrayBuilder* builder);
|
| @@ -1458,66 +1456,6 @@
|
| }
|
|
|
|
|
| -HValue* CodeStubGraphBuilderBase::CheckString(HValue* input, bool convert) {
|
| - if (!convert) return BuildCheckString(input);
|
| - IfBuilder if_inputissmi(this);
|
| - HValue* inputissmi = if_inputissmi.If<HIsSmiAndBranch>(input);
|
| - if_inputissmi.Then();
|
| - {
|
| - // Convert the input smi to a string.
|
| - Push(BuildNumberToString(input, Type::SignedSmall()));
|
| - }
|
| - if_inputissmi.Else();
|
| - {
|
| - HValue* input_map =
|
| - Add<HLoadNamedField>(input, inputissmi, HObjectAccess::ForMap());
|
| - HValue* input_instance_type = Add<HLoadNamedField>(
|
| - input_map, inputissmi, HObjectAccess::ForMapInstanceType());
|
| - IfBuilder if_inputisstring(this);
|
| - if_inputisstring.If<HCompareNumericAndBranch>(
|
| - input_instance_type, Add<HConstant>(FIRST_NONSTRING_TYPE), Token::LT);
|
| - if_inputisstring.Then();
|
| - {
|
| - // The input is already a string.
|
| - Push(input);
|
| - }
|
| - if_inputisstring.Else();
|
| - {
|
| - // Convert to primitive first (if necessary), see
|
| - // ES6 section 12.7.3 The Addition operator.
|
| - IfBuilder if_inputisprimitive(this);
|
| - STATIC_ASSERT(FIRST_PRIMITIVE_TYPE == FIRST_TYPE);
|
| - if_inputisprimitive.If<HCompareNumericAndBranch>(
|
| - input_instance_type, Add<HConstant>(LAST_PRIMITIVE_TYPE), Token::LTE);
|
| - if_inputisprimitive.Then();
|
| - {
|
| - // The input is already a primitive.
|
| - Push(input);
|
| - }
|
| - if_inputisprimitive.Else();
|
| - {
|
| - // TODO(bmeurer): Add support for fast ToPrimitive conversion using
|
| - // a dedicated ToPrimitiveStub.
|
| - Add<HPushArguments>(input);
|
| - Push(Add<HCallRuntime>(Runtime::FunctionForId(Runtime::kToPrimitive),
|
| - 1));
|
| - }
|
| - if_inputisprimitive.End();
|
| - // Convert the primitive to a string value.
|
| - ToStringDescriptor descriptor(isolate());
|
| - ToStringStub stub(isolate());
|
| - HValue* values[] = {context(), Pop()};
|
| - Push(AddUncasted<HCallWithDescriptor>(
|
| - Add<HConstant>(stub.GetCode()), 0, descriptor,
|
| - Vector<HValue*>(values, arraysize(values))));
|
| - }
|
| - if_inputisstring.End();
|
| - }
|
| - if_inputissmi.End();
|
| - return Pop();
|
| -}
|
| -
|
| -
|
| template <>
|
| HValue* CodeStubGraphBuilder<StringAddStub>::BuildCodeInitializedStub() {
|
| StringAddStub* stub = casted_stub();
|
| @@ -1529,12 +1467,10 @@
|
|
|
| // Make sure that both arguments are strings if not known in advance.
|
| if ((flags & STRING_ADD_CHECK_LEFT) == STRING_ADD_CHECK_LEFT) {
|
| - left =
|
| - CheckString(left, (flags & STRING_ADD_CONVERT) == STRING_ADD_CONVERT);
|
| + left = BuildCheckString(left);
|
| }
|
| if ((flags & STRING_ADD_CHECK_RIGHT) == STRING_ADD_CHECK_RIGHT) {
|
| - right =
|
| - CheckString(right, (flags & STRING_ADD_CONVERT) == STRING_ADD_CONVERT);
|
| + right = BuildCheckString(right);
|
| }
|
|
|
| return BuildStringAdd(left, right, HAllocationMode(pretenure_flag));
|
|
|