| Index: src/builtins.cc
|
| diff --git a/src/builtins.cc b/src/builtins.cc
|
| index de5817188d95db5b9c63cb773f8592b0e08ad5ab..4d2173d9fae62cc5c0defe4d7e39a42cdea93006 100644
|
| --- a/src/builtins.cc
|
| +++ b/src/builtins.cc
|
| @@ -1721,23 +1721,11 @@ BUILTIN(ObjectValues) {
|
| Handle<JSReceiver> receiver;
|
| ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, receiver,
|
| Object::ToObject(isolate, object));
|
| - Handle<FixedArray> keys;
|
| + Handle<FixedArray> values;
|
| ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| - isolate, keys,
|
| - JSReceiver::GetKeys(receiver, JSReceiver::OWN_ONLY, ENUMERABLE_STRINGS,
|
| - CONVERT_TO_STRING));
|
| -
|
| - for (int i = 0; i < keys->length(); ++i) {
|
| - auto key = Handle<Name>::cast(FixedArray::get(keys, i));
|
| - Handle<Object> value;
|
| -
|
| - ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| - isolate, value, Object::GetPropertyOrElement(receiver, key, STRICT));
|
| -
|
| - keys->set(i, *value);
|
| - }
|
| -
|
| - return *isolate->factory()->NewJSArrayWithElements(keys);
|
| + isolate, values,
|
| + JSReceiver::GetOwnValues(receiver, SKIP_SYMBOLS, CONVERT_TO_STRING));
|
| + return *isolate->factory()->NewJSArrayWithElements(values);
|
| }
|
|
|
|
|
| @@ -1747,27 +1735,11 @@ BUILTIN(ObjectEntries) {
|
| Handle<JSReceiver> receiver;
|
| ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, receiver,
|
| Object::ToObject(isolate, object));
|
| - Handle<FixedArray> keys;
|
| + Handle<FixedArray> entries;
|
| ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| - isolate, keys,
|
| - JSReceiver::GetKeys(receiver, JSReceiver::OWN_ONLY, ENUMERABLE_STRINGS,
|
| - CONVERT_TO_STRING));
|
| -
|
| - for (int i = 0; i < keys->length(); ++i) {
|
| - auto key = Handle<Name>::cast(FixedArray::get(keys, i));
|
| - Handle<Object> value;
|
| -
|
| - ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| - isolate, value, Object::GetPropertyOrElement(receiver, key, STRICT));
|
| -
|
| - auto entry_storage = isolate->factory()->NewUninitializedFixedArray(2);
|
| - entry_storage->set(0, *key);
|
| - entry_storage->set(1, *value);
|
| - auto entry = isolate->factory()->NewJSArrayWithElements(entry_storage);
|
| - keys->set(i, *entry);
|
| - }
|
| -
|
| - return *isolate->factory()->NewJSArrayWithElements(keys);
|
| + isolate, entries,
|
| + JSReceiver::GetOwnEntries(receiver, SKIP_SYMBOLS, CONVERT_TO_STRING));
|
| + return *isolate->factory()->NewJSArrayWithElements(entries);
|
| }
|
|
|
|
|
|
|