Reviewers: Benedikt Meurer,

Description:
Move runtime helper for ToName conversion onto Object.

[email protected]

Please review this at https://codereview.chromium.org/1306043003/

Base URL: https://chromium.googlesource.com/v8/v8.git@local_cleanup-heap-friends

Affected files (+30, -27 lines):
  M src/api.cc
  M src/objects.h
  M src/objects.cc
  M src/runtime/runtime.h
  M src/runtime/runtime-classes.cc
  M src/runtime/runtime-forin.cc
  M src/runtime/runtime-object.cc


Index: src/api.cc
diff --git a/src/api.cc b/src/api.cc
index 71f5632be3b137f8788f4a303dd251e354973363..52b73af684de28c1207aef21ec8b574e7c7aaf35 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -3532,7 +3532,7 @@ static i::MaybeHandle<i::Object> DefineObjectProperty(

   i::Handle<i::Name> name;
   ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, name,
-                                   i::Runtime::ToName(isolate, key),
+                                   i::Object::ToName(isolate, key),
                                    i::MaybeHandle<i::Object>());

return i::JSObject::DefinePropertyOrElementIgnoreAttributes(js_object, name, @@ -3856,7 +3856,7 @@ Maybe<bool> v8::Object::Has(Local<Context> context, Local<Value> key) {
   } else {
// Convert the key to a name - possibly by calling back into JavaScript.
     i::Handle<i::Name> name;
-    if (i::Runtime::ToName(isolate, key_obj).ToHandle(&name)) {
+    if (i::Object::ToName(isolate, key_obj).ToHandle(&name)) {
       maybe = i::JSReceiver::HasProperty(self, name);
     }
   }
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index 468aca53ec301e552e2510a2902daaddf5c931c3..2d83ac04944882e597320a4f7ae88470a7e3752d 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -90,6 +90,18 @@ MaybeHandle<JSReceiver> Object::ToObject(Isolate* isolate,
 }


+MaybeHandle<Name> Object::ToName(Isolate* isolate, Handle<Object> object) {
+  if (object->IsName()) {
+    return Handle<Name>::cast(object);
+  } else {
+    Handle<Object> converted;
+    ASSIGN_RETURN_ON_EXCEPTION(isolate, converted,
+                               Execution::ToString(isolate, object), Name);
+    return Handle<Name>::cast(converted);
+  }
+}
+
+
 bool Object::BooleanValue() {
   if (IsBoolean()) return IsTrue();
   if (IsSmi()) return Smi::cast(this)->value() != 0;
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index a0ca513dd9e249046150fd2888c38a914e9c887d..7907901011af7cdd6cd4ba5003a3a147ca2dd151 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -1074,9 +1074,12 @@ class Object {
   // native_context is used when creating wrapper object.
   static inline MaybeHandle<JSReceiver> ToObject(Isolate* isolate,
                                                  Handle<Object> object);
-  static MaybeHandle<JSReceiver> ToObject(Isolate* isolate,
-                                          Handle<Object> object,
-                                          Handle<Context> context);
+  MUST_USE_RESULT static MaybeHandle<JSReceiver> ToObject(
+      Isolate* isolate, Handle<Object> object, Handle<Context> context);
+
+  // Convert to a Name if needed.
+  MUST_USE_RESULT static MaybeHandle<Name> ToName(Isolate* isolate,
+                                                  Handle<Object> object);

   MUST_USE_RESULT static MaybeHandle<Object> GetProperty(
       LookupIterator* it, LanguageMode language_mode = SLOPPY);
Index: src/runtime/runtime-classes.cc
diff --git a/src/runtime/runtime-classes.cc b/src/runtime/runtime-classes.cc
index c485759a191ba7fbab6e5755293830a53f5b6108..97661113ad75ce494957d2a76da2e39626f885dd 100644
--- a/src/runtime/runtime-classes.cc
+++ b/src/runtime/runtime-classes.cc
@@ -380,7 +380,7 @@ RUNTIME_FUNCTION(Runtime_LoadKeyedFromSuper) {

   Handle<Name> name;
   ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, name,
-                                     Runtime::ToName(isolate, key));
+                                     Object::ToName(isolate, key));
   // TODO(verwaest): Unify using LookupIterator.
   if (name->AsArrayIndex(&index)) {
     ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
@@ -477,7 +477,7 @@ static Object* StoreKeyedToSuper(Isolate* isolate, Handle<JSObject> home_object,
   }
   Handle<Name> name;
   ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, name,
-                                     Runtime::ToName(isolate, key));
+                                     Object::ToName(isolate, key));
   // TODO(verwaest): Unify using LookupIterator.
   if (name->AsArrayIndex(&index)) {
return StoreElementToSuper(isolate, home_object, receiver, index, value,
Index: src/runtime/runtime-forin.cc
diff --git a/src/runtime/runtime-forin.cc b/src/runtime/runtime-forin.cc
index ecd55d172ae614318a7feb441f317616c8c49c2c..ff6804c8fb6527ee7f9624a7e16ebd9e2c588cea 100644
--- a/src/runtime/runtime-forin.cc
+++ b/src/runtime/runtime-forin.cc
@@ -28,7 +28,7 @@ RUNTIME_FUNCTION(Runtime_ForInFilter) {
   CONVERT_ARG_HANDLE_CHECKED(Object, key, 1);
   // TODO(turbofan): Fast case for array indices.
   Handle<Name> name;
-  if (!Runtime::ToName(isolate, key).ToHandle(&name)) {
+  if (!Object::ToName(isolate, key).ToHandle(&name)) {
     return isolate->heap()->exception();
   }
   Maybe<bool> result = JSReceiver::HasProperty(receiver, name);
@@ -53,7 +53,7 @@ RUNTIME_FUNCTION(Runtime_ForInNext) {
   }
   // TODO(turbofan): Fast case for array indices.
   Handle<Name> name;
-  if (!Runtime::ToName(isolate, key).ToHandle(&name)) {
+  if (!Object::ToName(isolate, key).ToHandle(&name)) {
     return isolate->heap()->exception();
   }
   Maybe<bool> result = JSReceiver::HasProperty(receiver, name);
Index: src/runtime/runtime-object.cc
diff --git a/src/runtime/runtime-object.cc b/src/runtime/runtime-object.cc
index 9134b39dcadd7679b51ca14072667b57c0d5e553..2dd5db86e127cb228572ca1d9f3c8865340abcfc 100644
--- a/src/runtime/runtime-object.cc
+++ b/src/runtime/runtime-object.cc
@@ -14,18 +14,6 @@ namespace v8 {
 namespace internal {


-MaybeHandle<Name> Runtime::ToName(Isolate* isolate, Handle<Object> key) {
-  if (key->IsName()) {
-    return Handle<Name>::cast(key);
-  } else {
-    Handle<Object> converted;
-    ASSIGN_RETURN_ON_EXCEPTION(isolate, converted,
-                               Execution::ToString(isolate, key), Name);
-    return Handle<Name>::cast(converted);
-  }
-}
-
-
 MaybeHandle<Object> Runtime::GetObjectProperty(Isolate* isolate,
                                                Handle<Object> object,
                                                Handle<Object> key,
@@ -45,7 +33,8 @@ MaybeHandle<Object> Runtime::GetObjectProperty(Isolate* isolate,

   // Convert the key to a name - possibly by calling back into JavaScript.
   Handle<Name> name;
-  ASSIGN_RETURN_ON_EXCEPTION(isolate, name, ToName(isolate, key), Object);
+  ASSIGN_RETURN_ON_EXCEPTION(isolate, name, Object::ToName(isolate, key),
+                             Object);

   // Check if the name is trivially convertible to an index and get
   // the element if so.
@@ -150,7 +139,8 @@ MaybeHandle<Object> Runtime::DeleteObjectProperty(Isolate* isolate,
   }

   Handle<Name> name;
-  ASSIGN_RETURN_ON_EXCEPTION(isolate, name, ToName(isolate, key), Object);
+  ASSIGN_RETURN_ON_EXCEPTION(isolate, name, Object::ToName(isolate, key),
+                             Object);

return JSReceiver::DeletePropertyOrElement(receiver, name, language_mode);
 }
@@ -175,7 +165,8 @@ MaybeHandle<Object> Runtime::SetObjectProperty(Isolate* isolate,
   }

   Handle<Name> name;
-  ASSIGN_RETURN_ON_EXCEPTION(isolate, name, ToName(isolate, key), Object);
+  ASSIGN_RETURN_ON_EXCEPTION(isolate, name, Object::ToName(isolate, key),
+                             Object);

LookupIterator it = LookupIterator::PropertyOrElement(isolate, object, name);
   return Object::SetProperty(&it, value, language_mode,
Index: src/runtime/runtime.h
diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h
index dcc010807e5c7801b9930f3dacdebf8f2a27d8b2..fc09f97fe5e8b13ce9de214417eb03b0f0606171 100644
--- a/src/runtime/runtime.h
+++ b/src/runtime/runtime.h
@@ -1150,9 +1150,6 @@ class Runtime : public AllStatic {
   MUST_USE_RESULT static MaybeHandle<Object> GetPrototype(
       Isolate* isolate, Handle<Object> object);

-  MUST_USE_RESULT static MaybeHandle<Name> ToName(Isolate* isolate,
-                                                  Handle<Object> key);
-
   enum TypedArrayId {
     // arrayIds below should be synchronized with typedarray.js natives.
     ARRAY_ID_UINT8 = 1,


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to