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.