From: bmeurer Date: Mon, 28 Sep 2015 05:33:55 +0000 (-0700) Subject: [es6] Fix invalid ToString in implementation of ToName. X-Git-Tag: upstream/4.7.83~83 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=09626525fea63396c8a200deb9081d6dd1034d57;p=platform%2Fupstream%2Fv8.git [es6] Fix invalid ToString in implementation of ToName. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1365503005 Cr-Commit-Position: refs/heads/master@{#30957} --- diff --git a/src/full-codegen/arm/full-codegen-arm.cc b/src/full-codegen/arm/full-codegen-arm.cc index 0903d92..ec4d6d4 100644 --- a/src/full-codegen/arm/full-codegen-arm.cc +++ b/src/full-codegen/arm/full-codegen-arm.cc @@ -3804,8 +3804,8 @@ void FullCodeGenerator::EmitToName(CallRuntime* expr) { __ CompareObjectType(r0, r1, r1, LAST_NAME_TYPE); __ b(ls, &done_convert); __ bind(&convert); - ToStringStub stub(isolate()); - __ CallStub(&stub); + __ Push(r0); + __ CallRuntime(Runtime::kToName, 1); __ bind(&done_convert); context()->Plug(r0); } diff --git a/src/full-codegen/arm64/full-codegen-arm64.cc b/src/full-codegen/arm64/full-codegen-arm64.cc index 50cbbcc..484cf1e 100644 --- a/src/full-codegen/arm64/full-codegen-arm64.cc +++ b/src/full-codegen/arm64/full-codegen-arm64.cc @@ -3514,8 +3514,8 @@ void FullCodeGenerator::EmitToName(CallRuntime* expr) { STATIC_ASSERT(FIRST_NAME_TYPE == FIRST_TYPE); __ JumpIfObjectType(x0, x1, x1, LAST_NAME_TYPE, &done_convert, ls); __ Bind(&convert); - ToStringStub stub(isolate()); - __ CallStub(&stub); + __ Push(x0); + __ CallRuntime(Runtime::kToName, 1); __ Bind(&done_convert); context()->Plug(x0); } diff --git a/src/full-codegen/ia32/full-codegen-ia32.cc b/src/full-codegen/ia32/full-codegen-ia32.cc index b792657..50d84d0 100644 --- a/src/full-codegen/ia32/full-codegen-ia32.cc +++ b/src/full-codegen/ia32/full-codegen-ia32.cc @@ -3704,8 +3704,8 @@ void FullCodeGenerator::EmitToName(CallRuntime* expr) { __ CmpObjectType(eax, LAST_NAME_TYPE, ecx); __ j(below_equal, &done_convert, Label::kNear); __ bind(&convert); - ToStringStub stub(isolate()); - __ CallStub(&stub); + __ Push(eax); + __ CallRuntime(Runtime::kToName, 1); __ bind(&done_convert); context()->Plug(eax); } diff --git a/src/full-codegen/mips/full-codegen-mips.cc b/src/full-codegen/mips/full-codegen-mips.cc index a6d2258..ed599ca 100644 --- a/src/full-codegen/mips/full-codegen-mips.cc +++ b/src/full-codegen/mips/full-codegen-mips.cc @@ -3819,9 +3819,8 @@ void FullCodeGenerator::EmitToName(CallRuntime* expr) { __ GetObjectType(v0, a1, a1); __ Branch(&done_convert, le, a1, Operand(LAST_NAME_TYPE)); __ bind(&convert); - ToStringStub stub(isolate()); - __ mov(a0, v0); - __ CallStub(&stub); + __ Push(v0); + __ CallRuntime(Runtime::kToName, 1); __ bind(&done_convert); context()->Plug(v0); } diff --git a/src/full-codegen/mips64/full-codegen-mips64.cc b/src/full-codegen/mips64/full-codegen-mips64.cc index 59142cc..fe1d74d 100644 --- a/src/full-codegen/mips64/full-codegen-mips64.cc +++ b/src/full-codegen/mips64/full-codegen-mips64.cc @@ -3822,9 +3822,8 @@ void FullCodeGenerator::EmitToName(CallRuntime* expr) { __ GetObjectType(v0, a1, a1); __ Branch(&done_convert, le, a1, Operand(LAST_NAME_TYPE)); __ bind(&convert); - ToStringStub stub(isolate()); - __ mov(a0, v0); - __ CallStub(&stub); + __ Push(v0); + __ CallRuntime(Runtime::kToName, 1); __ bind(&done_convert); context()->Plug(v0); } diff --git a/src/full-codegen/x64/full-codegen-x64.cc b/src/full-codegen/x64/full-codegen-x64.cc index ee71661..553e627 100644 --- a/src/full-codegen/x64/full-codegen-x64.cc +++ b/src/full-codegen/x64/full-codegen-x64.cc @@ -3701,8 +3701,8 @@ void FullCodeGenerator::EmitToName(CallRuntime* expr) { __ CmpObjectType(rax, LAST_NAME_TYPE, rcx); __ j(below_equal, &done_convert, Label::kNear); __ bind(&convert); - ToStringStub stub(isolate()); - __ CallStub(&stub); + __ Push(rax); + __ CallRuntime(Runtime::kToName, 1); __ bind(&done_convert); context()->Plug(rax); } diff --git a/src/objects-inl.h b/src/objects-inl.h index 2efd7ef..3fe65c4 100644 --- a/src/objects-inl.h +++ b/src/objects-inl.h @@ -1146,13 +1146,6 @@ MaybeHandle Object::ToObject(Isolate* isolate, // static -MaybeHandle Object::ToName(Isolate* isolate, Handle input) { - if (input->IsName()) return Handle::cast(input); - return ToString(isolate, input); -} - - -// static MaybeHandle Object::ToPrimitive(Handle input, ToPrimitiveHint hint) { if (input->IsPrimitive()) return input; diff --git a/src/objects.cc b/src/objects.cc index 02d8d34..af37cb1 100644 --- a/src/objects.cc +++ b/src/objects.cc @@ -94,6 +94,16 @@ MaybeHandle Object::ToObject(Isolate* isolate, // static +MaybeHandle Object::ToName(Isolate* isolate, Handle input) { + ASSIGN_RETURN_ON_EXCEPTION( + isolate, input, Object::ToPrimitive(input, ToPrimitiveHint::kString), + Name); + if (input->IsName()) return Handle::cast(input); + return ToString(isolate, input); +} + + +// static MaybeHandle Object::ToNumber(Handle input) { while (true) { if (input->IsNumber()) { diff --git a/src/objects.h b/src/objects.h index 6838f27..5766a8c 100644 --- a/src/objects.h +++ b/src/objects.h @@ -1113,8 +1113,8 @@ class Object { Isolate* isolate, Handle object, Handle context); // ES6 section 7.1.14 ToPropertyKey - MUST_USE_RESULT static inline MaybeHandle ToName(Isolate* isolate, - Handle input); + MUST_USE_RESULT static MaybeHandle ToName(Isolate* isolate, + Handle input); // ES6 section 7.1.1 ToPrimitive MUST_USE_RESULT static inline MaybeHandle ToPrimitive(