[es6] Fix invalid ToString in implementation of ToName.
authorbmeurer <bmeurer@chromium.org>
Mon, 28 Sep 2015 05:33:55 +0000 (22:33 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 28 Sep 2015 05:34:08 +0000 (05:34 +0000)
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/1365503005

Cr-Commit-Position: refs/heads/master@{#30957}

src/full-codegen/arm/full-codegen-arm.cc
src/full-codegen/arm64/full-codegen-arm64.cc
src/full-codegen/ia32/full-codegen-ia32.cc
src/full-codegen/mips/full-codegen-mips.cc
src/full-codegen/mips64/full-codegen-mips64.cc
src/full-codegen/x64/full-codegen-x64.cc
src/objects-inl.h
src/objects.cc
src/objects.h

index 0903d92..ec4d6d4 100644 (file)
@@ -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);
 }
index 50cbbcc..484cf1e 100644 (file)
@@ -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);
 }
index b792657..50d84d0 100644 (file)
@@ -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);
 }
index a6d2258..ed599ca 100644 (file)
@@ -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);
 }
index 59142cc..fe1d74d 100644 (file)
@@ -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);
 }
index ee71661..553e627 100644 (file)
@@ -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);
 }
index 2efd7ef..3fe65c4 100644 (file)
@@ -1146,13 +1146,6 @@ MaybeHandle<JSReceiver> Object::ToObject(Isolate* isolate,
 
 
 // static
-MaybeHandle<Name> Object::ToName(Isolate* isolate, Handle<Object> input) {
-  if (input->IsName()) return Handle<Name>::cast(input);
-  return ToString(isolate, input);
-}
-
-
-// static
 MaybeHandle<Object> Object::ToPrimitive(Handle<Object> input,
                                         ToPrimitiveHint hint) {
   if (input->IsPrimitive()) return input;
index 02d8d34..af37cb1 100644 (file)
@@ -94,6 +94,16 @@ MaybeHandle<JSReceiver> Object::ToObject(Isolate* isolate,
 
 
 // static
+MaybeHandle<Name> Object::ToName(Isolate* isolate, Handle<Object> input) {
+  ASSIGN_RETURN_ON_EXCEPTION(
+      isolate, input, Object::ToPrimitive(input, ToPrimitiveHint::kString),
+      Name);
+  if (input->IsName()) return Handle<Name>::cast(input);
+  return ToString(isolate, input);
+}
+
+
+// static
 MaybeHandle<Object> Object::ToNumber(Handle<Object> input) {
   while (true) {
     if (input->IsNumber()) {
index 6838f27..5766a8c 100644 (file)
@@ -1113,8 +1113,8 @@ class Object {
       Isolate* isolate, Handle<Object> object, Handle<Context> context);
 
   // ES6 section 7.1.14 ToPropertyKey
-  MUST_USE_RESULT static inline MaybeHandle<Name> ToName(Isolate* isolate,
-                                                         Handle<Object> input);
+  MUST_USE_RESULT static MaybeHandle<Name> ToName(Isolate* isolate,
+                                                  Handle<Object> input);
 
   // ES6 section 7.1.1 ToPrimitive
   MUST_USE_RESULT static inline MaybeHandle<Object> ToPrimitive(